IP /TCP协议及握手过程和数据包格式中级详解
IP路由选择过程: ![]() TCP数据包(TCP Datagram): 传输控制协议TCP是一种提供可靠数据传输的通行协议,他在网络协议模块和TCP模块之间传输,TCP数据包分TCP包头和数据两个部分。TCP数据是被封装在IP数据包中的,和udp类似,在IP数据包的数据部分。TCP包头包含了源端口、目的端口、序列号、确认序列号、头部长度、码元比特、窗口、校验和、紧急指针、可选项、填充位和数据区,在发送数据时,应用层数据传输到传输层,加上TCP的TCP包头,数据就构成了包文。报文式网际层IP的数据,如果再加上IP首部,就构成了IP数据包。TCP包头结构定义如下:
TCP提供了一个完全可靠的、面向连接的、全双工的(包含两个独立且方向相反的连接)流传输服务,允许两个应用程序建立一个连接,并在全双工方向上发送数据,然后终止连接。每一个TCP连接可靠的建立并完善地终止,在终止发生前,所有数据都会被可靠地传送。 ![]() TCP比较有名的概念是3次握手,所谓3次握手指通信双方批次交换3次信息。3次握手是在数据包丢失、重复和延迟的情况下,确保通信双方信息交换确定性的充分必要条件。 TCP/IP 三次握手建立连接: 第一次握手:客户端--发送----syn包(seq=x)-----服务器--进入SYN_END状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=x),即SYN+ACK包,,此时服务器进入SYN——RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成握手,连接建立。 ![]() 注:握手时,发送的包不包括数据;连接建立后,才开始正式传输数据。在主动关闭连接之前,TCP连接将会被一直保持下去。 数据传输机制: 1. 超时重传:该机制用来保证TCP传输的可靠性。 2.快速重输:发送端在收到连续的丢包信息后,立即启动重传,节约等待超时时间。 3.流量控制:TCP滑动窗流量控制。滑动窗可以是提高TCP传输效率的一种机制。 4.拥塞控制:基于整个网络考虑的,拥堵策略算法主要包括:慢启动,拥塞避免,拥塞发生,快速恢复。 TCP四次握手断开连接: 第一次握手:主断方发送一个FIN,通知被断方:我即将关闭数据传输通道。此时主断方还可接收数据。 第二次握手:被断方收到FIN包后,发送一个ACK给主断方,确认序号为收到的序号+1(与SNK相同,一个FIN占用一个序号)。 第三次握手:被断方发送一个FIN,通知主动方:我即将关闭数据传输通道。 第四次握手:主断方收到FIN后,发送一个ACK给被断方,确认序号为收到的序号+1,通道双方断开。四次挥手完成 。 ![]() 注:可靠传输服务软件都是面向数据流的。 UDP数据包: 用户数据包协议UDP是一个面向无连接的协议,采用该协议后,两个应用程序不需要建立连接,他为应用程序提供一次向的数据传输服务。UDP协议工作在网际协议模块与UDP模块之间,不提供差错恢复,不能提供数据重传,所以使用UDP协议的应用程序都比较复杂,例如DNS(域名解析服务)应用程序。UDP数据包包头结构如下:
UDP数据包分为伪首部和首部两个部分。 首部包含原IP地址、目标IP地址、协议字、UDP长度、源端口、目的端口、包文长度、校验和、数据区,是为了计算和检验而设置的。 伪首部包含IP首部一些字段,其目的是让UDP两次检查数据是否正确到达目的地。使用UDP协议时,协议字为17,包文长度包括头部和数据区的总长度,最小8个字节。校验和是以16为单位,各位求补(首位为符号位)将和相加,然后再求补。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |