2020/01/03 03-网络通信和socket

2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
之前的例子能否换种方式实现,是用的网络路由R1写172网段,R2写192网段

是否可以写成默认路由
2020/01/03 03-网络通信和socket
企业访问互联网都是通过默认路由来实现的

2020/01/03 03-网络通信和socket
很多情况下路由表记录是通过协议自动生成的

在稍复杂的环境中,路由记录就不是手工添加的,是通过路由协议自动生成的
路由器可以跑一个软件,这个软件自动生成路由记录

路由协议RIP,OSPF,BGP或者思科的emgIp

RIP是根据路由数量来判断路由的优先速度,优先级,经过路由越少,就选择哪条路,经过一样多,就随机选择,但是会根据路由器数量来选择可能并不合理,比如网络速度
2020/01/03 03-网络通信和socketOSPF会综合考虑很多因素,比如带宽,如果下面的带宽比较大,就优先选下面的
一般RIP过于简单不用,OSPF在比较大的内部网络用(如中移动),BGP是用于互联网
2020/01/03 03-网络通信和socket
netstat比较老,现在可能推荐ss 来代替

n表示数字,t表示tcp协议相关,自己的22端口被8.1链接
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
l处于监听状态
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
p可以看到进程名称
2020/01/03 03-网络通信和socket
查看某个端口是被哪个应用程序占用
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
2020/01/03 03-网络通信和socket
e显示更详细的信息
2020/01/03 03-网络通信和socket
现在看到的时候正在监听的,链接的看不出来,-a,代表各种状态都可以2020/01/03 03-网络通信和socket
UDP协议没有标记位,就没有状态,TCP有有限标记位
2020/01/03 03-网络通信和socket
可以查看当前网卡的统计信息
2020/01/03 03-网络通信和socket
MTU是最大传输单元,以太网帧的最大内容,一般都是15002020/01/03 03-网络通信和socket
当前状态是没有丢包的
2020/01/03 03-网络通信和socket
现在找台机器ping多点
2020/01/03 03-网络通信和socket
watch是一秒中执行一次命令

2020/01/03 03-网络通信和socket
RX-ERR RX-drp没有丢包现象
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
ifconfig命令逐渐淘汰了,ip命令是子命令组合而成
2020/01/03 03-网络通信和socket
也可以查看路由表
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
ip addr 也可以添加地址 2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
删除地址
2020/01/03 03-网络通信和socket
flush相当于把地址全删除了
eth0:0相当于给网卡起子名称

2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
就多了个eth0:1,起个网卡别名2020/01/03 03-网络通信和socket
del可以删除2020/01/03 03-网络通信和socket
真正存到系统中还需要修改配置文件,上面都是临时的
2020/01/03 03-网络通信和socket
ss效率更高
2020/01/03 03-网络通信和socket
dport目标端口,sport源端口
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
centos6,7修改主机名方式不同
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
centos7有个专门的命令hostnamectl
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket实际上就是一个脚本,变量赋值
DEVICE设备 代表针对哪个网卡设置的
TYPE类型,默认就是以太网,可以不写
UUID 表示唯一编号,也可以不写(加UUID是表示,这个配置文件是唯一的)
ONBOOT=yes 是表示开机的时候,这个网卡启用的(默认也是启用的,no表示网卡不启用=禁用
NM_CONTROLLED
BOOTPROTO=dhcp 表示这个网卡是自动获取还是手工指定的,(dhcp通过dhcp自动获取;static和none都可以表示IP是手工指定的(linux作为服务器,一般都是要指定的,都要修改为static或者none))
DEFROUTE
IPV4_FAILURE_FATAL
NAME="System eth0 "网卡名字,相当于描述信息
HWADDR = mac地址,必须和你网卡真实的mac地址相匹配,如果写错,将导致整个网卡不可用
PEERDNS
PEERROUTES
LAST_CONNECT

centos7也有新的工具配置网卡
2020/01/03 03-网络通信和socket
centos7会对网络设备进行判断命名
1如果是集成网卡就是eno开头
2.外置网卡就是ens
3.根据物理接口位置,enp
4.识别不出来,enx,(拿mac地址命名)

如果企业里,centos6,7混用就可以对配置文件进行修改
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
这一段加上就影响了网卡命名方式
2020/01/03 03-网络通信和socket
要生成对应的grub文件才可以,生成的文件才是后面要修改的文件
2020/01/03 03-网络通信和socket
加上这一段关键字
2020/01/03 03-网络通信和socket
可以通过命令来间接修改
2020/01/03 03-网络通信和socket
这个命令读取下面的来间接生成grub2/grub。cfg
2020/01/03 03-网络通信和socket
这个命令直接打只是在屏幕上输出,不会写入文件,需要-o或者重定向2020/01/03 03-网络通信和socket这样centos6,7命名方式就一样了,管理起来方便 2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
nmcli也是icentos7的新工具
eth1网卡对应的配置名称时wired connection 1

2020/01/03 03-网络通信和socket
可以改个名字
2020/01/03 03-网络通信和socket
查看eth1网卡的设置
2020/01/03 03-网络通信和socket
ipv4.method 自动获取的
2020/01/03 03-网络通信和socket
可以进行修改
2020/01/03 03-网络通信和socket
改完之后确实显示出来
2020/01/03 03-网络通信和socket
up重新加载,其实改的还是网卡配置文件2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
改成DHCP可以直接重启 2020/01/03 03-网络通信和socket
用不到的配置文件可以删除

2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
nslookup是测dns解析的
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
ftp匿名用户,密码随便敲2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
下载login文件
2020/01/03 03-网络通信和socket
links是个浏览器,dump只抓取文字
2020/01/03 03-网络通信和socket
source查看源码

http

2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
OSI模型分7层,tCP/IP分四层(应用层,传输层,互联网层,网络接口层)
ssh,tcp协议,mysql协议,都属于应用层,
既然是应用层协议,那就有应用层的报文头部,每一层都有每一层的报文头部,应用层也有应用层的报文头部,tcp/ip协议的报文头部,数据链路层的报文头部,
tcp的3次握手,四次挥手,
http协议也有自己的报文头部
http默认使用TCP的80端口
FTP ,21端口,20(并不固定)

2020/01/03 03-网络通信和socket跨网络都涉及到2个进程如何通讯,一般都用tcpip协议,所以一般都是基于套接字进行通讯,
两个主机跨网络如何找对对方,就需要套接字socket
套接字就是ip地址+协议端口
通过ip地址可以找到网络中唯一的设备,通过端口就确定了在这台主机上的应用程序地址(不会有两个进程使用同一个端口号),这两个要素组合成socket
从外面浏览器如果访问京东网站,就需要访问京东对应的套接字
浏览器输入www.jd.com
前端利用dns解析把www.jd.com解析成地址,
利用地址找到京东网站的主机,找到主机,因为写的是http://
tcp/ip协议的默认端口号是80,通过ip地址再加上tcp的端口号80就找到了web服务器地址
53是dns服务端口,tcp,udp

2020/01/03 03-网络通信和socket每个引用程序,需要有一个socket套接层,这个套接层,把不同的应用程序加以区分(协议和端口号,比如tcp的80端口(到达套接字,就知道是给tcp还是mysql的进程))2020/01/03 03-网络通信和socket
socket domain,你需要哪种地址服务
AF_INIT :IPV4
AF_INET6:IPV6
AF_UNIX:代表同一台机器不同程序间通讯使用的

2020/01/03 03-网络通信和socket
socket 在进行编程的时候,用了一些相关概念,
Domain主要特指协议类型,是IPV4,还是IPV6协议
还有一种是叫UNIX的Domain,是正在同一主机不同进程上使用的,比如mysql的粉色文件
跨网络就不能使用socket文件了,就需要用ipv4或ipv6的跨网络domain 了
在同一台机器上就没必要像在网络中传输一样,解封装,一般都是用.sock文件,来进行通讯

2020/01/03 03-网络通信和socket
在linux有些地方可以看到socket文件,粉色s开头
2020/01/03 03-网络通信和socket
到底用哪种协议
需要可靠就TCP
效率高就UDP

2020/01/03 03-网络通信和socketsocket类型
三次握手,四次挥手
tcp协议是可靠的,带有相应的标记位fin,ack、数据包的***,确认号
udp协议是不可靠的

2020/01/03 03-网络通信和socket服务器端会打开socket对象
soscket创建好后,会绑定相关协议,包括端口(比如走http的就绑定80)
绑定好后,就打开处于监听状态
监听好后,客户端想要链接,也打开socket,这个socket就不需要绑定端口
直接连接(写上服务器地址和端口号)connect函数,发送请求
服务器端收到请求就会对客户端进行响应
可以发送数据也可以写数据
客户端也一样,双方都能写和读数据
前面的过程分服务器端和客户端,
一般服务器和客户端建立连接,就谈不上服务器端和客户端了
因为服务器端和客户端都可以发数据和收数据

2020/01/03 03-网络通信和socket套接字底层调用的一些功能2020/01/03 03-网络通信和socket
tcp服务器端的一个程序,使用pythonn写的
socket 创建资源对象
bind绑定

客户端代码
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
修改地址
2020/01/03 03-网络通信和socket
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
再找另外的主机当客户端
2020/01/03 03-网络通信和socket
这句话其实是从服务器端s收到的
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
以wang的身份跑
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
改成小的端口号2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
root用户运行代码没问题
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket
使用普通用户就不行,1023一下都是特权端口,只有root才能使用
2020/01/03 03-网络通信和socket2020/01/03 03-网络通信和socket