强调内容桥接网络,手动选择桥接到网卡。
第一次:客户端-服务器,SYN包, seq = j。
第二次:服务器-客户端,SYN、ACK包,ack = 客户端的seq + 1,seq = k。
第三次:客户端-服务器,ACK包, ack = 服务端的seq + 1,seq累加。
数据链路层头结构
48位, 6个字节,目标MAC物理地址,
48位, 6个字节,源MAC物理地址,
16位, 2个字节,互联网类型,(IPv4,0x0800),
IP层
1:4位,版本,0.5个字节,互联网类型,(0x0100,十进制4,版本4),目前也有IPv6。
2:4位首部长度,0.5个字节,IP头首部长度,(0x0101,十进制5,长度 = 4 * 5 = 20)
4位最大长度(0x1111)为15个长度单位,每个长度单位为4字节,所以IP协议报文头的最大长度为60个字节,最短为上图所示的20个字节。
3:8位,服务类型
4:16位,总长度,应用层 + 传输层 + 网络层
5:16位,标识
6:3位,标志符
7:13位,片偏移
8:8位,生存时间
9:8位,协议,指明IP层所封装的上层协议类型,
1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议。
10:16位,首部校验和。
11:32位,源IP地址。
12:32位,目标IP地址
TCP层
1:16位,源端口号
2:16位,目标端口号
3:32位,顺序号
4:32位,确认号
5:4位,头部长度
6:6位,保留位
7:6位,标志位字段
8:16位,窗口大小
9:16位,TCP校验和
10:16位,紧急指针
11:剩下的是选项和数据,可有可无。
TCP六种状态
SYN:建立连接
ACK:确认
PSH:有数据
UGR:紧急指针
RST:复位
FIN:关闭连接
开始传输数据
两端的序列号和确认号开始都是三次握手之后确定的值。
A端向B端发送数据,A的序列号,确认号,数据长度发送给B端,
B端收到A端的数据,自己的序列号不变,自己的确认号 = A端的序列号 + 数据长度,返回给A端,
A端收到B端的响应,自己的序列号 = B端的确认号,自己的确认号不变。
也就是说只有发送数据才能改变序列号,
只有收到数据才能改变确认号。