首页 > 技术文章 > 以太 ip tcp udp 三次握手的理解

xuan0212 2021-10-22 21:37 原文

以太帧:

1、前导码(7字节):使接收器建立比特同步。

2、起始定界符SFD1字节):指示一帧的开始。

3、目的地址DA6字节):指出要接收该帧的工作站。

4、源地址SA6字节):指示发送该帧的工作站地址。

5、数据字段长度长度(2字节):指示其后的逻辑链路控制(LLC)数据字节的长度。

6、逻辑链路控制帧LLC:携带的用户数据。

7、填充字段PAD:以保证帧有足够长度来适应碰撞检测的需要。

8、帧校验序列FCS4字节):采用循环冗余校验码(CRC)用于检验帧在传输过程中有无差错。

ip:

 ip_v IP协议的版本号,这里是4,现在IPV6已经出来了

 ip_hl IP包首部长度,这个值以4字节为单位.IP协议首部的固定长度为20个字节,如果IP包没有选项,那么这个值为5.

 ip_tos服务类型,说明提供的优先权.

 ip_len说明IP数据的长度.以字节为单位.

 ip_id标识这个IP数据包.

 ip_off碎片偏移,这和上面ID一起用来重组碎片的.

 ip_ttl生存时间.没经过一个路由的时候减一,直到为0时被抛弃.

 ip_p协议,表示创建这个IP数据包的高层协议.TCP,UDP协议.

 ip_sum首部校验和,提供对首部数据的校验.

 ip_src,ip_dst发送者和接收者的IP地址

TCP包:

URG:表示紧急指针是否有效

ACK:    确认号是否有效。

PSH:提示接收端应用程序应该立即从TCP接受缓冲区读走数据,为之后的接受的数据腾出位置。

RST:表示要求对方重写建立连接。复位报文端。

SYN:表示建立一个连接。同步报文段。

FIN:表示通知对方本端要关闭连接了。结束报文端

 

 

UDP包:

源端口:这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写入该字段中。如果不写入端口号,则把这个字段设置为 0。这样,接收端的应用程序就不能发送响应了。

目的端口:接收端计算机上 UDP 软件使用的端口,占据 16 位。

长度:该字段占据 16 位,表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8

校验值:该字段占据 16 位,可以检验数据在传输过程中是否被损坏。

 

 

 

三次握手:

三次握手协议指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互:

第一次握手:客户端发送syn(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个SYN(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。连接建立后,客户端和服务器就可以开始进行数据传输了。

 

 

推荐阅读