TCP与UDP协议

(1)TCP协议

面向连接、可靠、基于字节的传输,IP报头中协议号为6。一般用于对可靠性要求较高的应用。

(2)UDP协议

无连接、不可靠、基于报文的传输,IP报头中协议号为17。主机不需维持连接状态具有较高的传输效率,可靠性由应用层来提供。

TCP报头结构

① 源端口和目的端口:传输层与应用层的服务接口。

② 序号:TCP连接传送的数据流中的每一个字节都有一个序号。序号字段是本报文段发送的数据的第一个字节的序号。

③ 确认号:期望收到对方下一个报文段的数据的第一个字节的序号。

④)数据偏移:指出报文段的数据起始处距离TCP报文段的起始处有多远。实际上就是TCP报文段首部的长度。范围20-60字节,默认为20字节。

⑤ 控制位:

URG(紧急指针):URG=1时,系统报文段中有紧急数据应尽快传送,

ACK(确认序号):ACK=1时确认号字段才有效,ACK=0时确认号字段无效。

PSH(推送):接收方收到PSH=1的报文段时不等待缓冲填满就提交到应用进程

RST(重置连接):RST=1时,表明TCP连接中出现严重差错,必须释放连接。

SYN(同步序列编号):SYN=1时,表明请求建立连接。

FIN(结束标志):当FIN=1时,发送端的数据已发送完毕并要求释放传输连接

⑥ 窗口:滑动窗口大小,用来控制对方发送的数据量,单位是字节,指明对方发送窗口的上限。窗口大小是一个16bit字段,因而窗口大小最大为65535。

⑦ 校验和:奇偶校验,校验的范围包括首部和数据两个部分,计算校验和时需要在报文段前加上伪首部(包括源目IP地址,IP协议号)。必选字段。

⑧紧急指针:指出本报文段中紧急数据最后一个字节的序号。只有当紧急比特URG=1时才有效。

UDP报头结构

①源端口和目的端口:是传输层与应用层的服务接口。

②长度:UDP的数据报长度(包含报头和数据),最小值为8字节(只有报头)

③ 校验和:覆盖UDP首部和UDP数据,计算校验和时需要在报文段前加上伪首部(包括源目IP地址,IP协议号,UDP长度)。必选字段。

TCP三次握手

TCP四次挥手

TCP连接状态

① CLOSED:关闭状态,没有连接

② LISTEN:侦听并等待对端的TCP连接请求

③ SYN-SENT:发送SYN连接请求后,等待对端回复SYN请求

④ SYN-RECEIVED:回复SYN请求后,等待对端响应ACK消息

⑤ ESTABLISHED:代表连接建立,双方在这个状态下进行TCP数据交互

⑥ CLOSE-WAIT:等待本地用户(进程)发送FIN关闭请求给对端

⑦ CLOSING:双方同时发送FIN时,进入CLOSING,等待对端发送响应ACK消息

⑧ TIME-WAIT:该状态是为了确保对端收到了FIN请求的ACK响应。

TCP协议四大机制

TCP字节编号确认机制

TCP是面向字节传输。需要将多个字节组成报文段传输,每个字节都有序号。在连接建立时,双方商定初始序号。TCP头部中的序号数值表示发送的报文段中的第1个字节的序号。TCP的确认号表示接收端期望下次收到的报文段中的第1个字节的序号,同时表示对之前接收到的报文段进行了确认。

TCP流量控制机制

TCP的流量控制使用滑动窗口机制实现,窗口最大为65535字节

① 发送窗口(swnd):发送方维护发送窗口,窗口大小取决于网络拥塞情况和接收方的能力。

② 接收窗口(rwnd):接收方维护接收窗口,窗口大小取决于接收方的缓冲区大小和处理能力。

③ 拥塞窗口(cwnd):拥塞窗口取决于网络的拥塞程度,动态变化。网络没有出现拥塞,则cwnd放大;出现拥塞,则cwnd减小。

当接收方成功接收到数据后,会将窗口向前滑动,并通知发送方继续发送更多的数据发送方收到对发送数据的确认后,也会将发送窗口向前滑动。如果发送方收到rwnd=0的TCP数据,则停止发送数据,直到接收到rwnd≠0。

TCP拥塞控制机制

在TCP拥塞控制机制包括慢启动和拥塞避免。TCP刚建立连接时,cwnd设为1,发送1个报文,如果收到接收方ACK报文,就继续以2方式放大拥塞窗口,直到cwnd>慢启动初始阈值ssthresh,进入拥塞避免阶段,TCP采用线性方式放大cwnd,即发送方每收到一个ACK确认报文,cwnd增加1,直到发送超时,ssthresh会减半到超时时刻cwnd大小的一半,然后cwnd会从1开始重复慢启动和拥塞避免步骤。

(1)快速重传:当接收方收到一个失序的报文段后会立即发出重复确认,以便让发送方及早知道有报文段没有发送到达。发送方只要连续收到三个重复确认,就立即重传对方没有收到的报文段。

(2)快速恢复:当发送方连续收到三个重复确认,立即把ssthresh减半,然后直接执行拥塞避免算法。

TCP重传机制

(1)停等ARQ:每发送一个报文段需要等待对方ACK确认。

(2)连续ARQ:连续发送多个报文段,等待这些报文段的ACK。

(3)回退n帧ARQ:当发送方接收到接收方的状态报告指示第n个报文段出错后,回退到这个n编号的报文段,从n编号以及之后的报文段全部重新发送。

(4)选择重传ARQ:当发送方接收到接收方的状态报告指示第n个报文段出错后,回退到这个n编号的报文并重传这一个报文段,然后从刚刚截至发送的编号的报文段继续发送后续报文段。

(5)快重传:发送端只要连续收到三个重复的ACK即可断定有报文段丢失了,就立即重传丢失的报文段。

相关推荐
njnu@liyong10 小时前
图解HTTP-HTTP报文
网络协议·计算机网络·http
kaixin_learn_qt_ing12 小时前
了解RPC
网络·网络协议·rpc
Hacker_LaoYi14 小时前
【漏洞分析】DDOS攻防分析(四)——TCP篇
网络·tcp/ip·ddos
爱吃水果蝙蝠汤14 小时前
DATACOM-IP单播路由(BGP)-复习-实验
网络·网络协议·tcp/ip
嵌入式大圣14 小时前
单片机UDP数据透传
单片机·嵌入式硬件·udp
loong_XL15 小时前
服务器ip:port服务用nginx 域名代理
服务器·tcp/ip·nginx
hkNaruto19 小时前
【P2P】【Go】采用go语言实现udp hole punching 打洞 传输速度测试 ping测试
golang·udp·p2p
从后端到QT20 小时前
boost asio 异步服务器
服务器·网络·tcp/ip
手心里的白日梦20 小时前
网络计算器的实现:TCP、守护进程、Json、序列化与反序列化
网络·tcp/ip·json
言成言成啊21 小时前
TCP与UDP的端口连通性
网络协议·tcp/ip·udp