上层协议TCP/UDP
TCP/IP 协议 族的 传输层协议 主要包括TCP 和UDP
TCP 是面向 连 接的可靠的 传输层协议 。它支持在并不可靠的网 络 上 实现 面向 连 接的可靠的数据 传输
UDP 是无 连 接的 传输协议 ,主要用于支持在 较 可靠的 链 路上的数据 传输 ,或用于 对 延 迟较 敏感的 应用
TCP的特点
• 三次握手
• 建立可靠连接
• 端口号
• 多路复用
• 完整性校验
• 差错检测
• 确认机制
• 应答接收
• ***
• 丢失检测、乱序重排
• 窗口机制
• 流量控制
TCP的封装格式
① Source Port:2Byte,源端口号
② Destination Port:2Byte,目标端口号
③ Sequence Number:4Byte,***,在TCP传送的数据流中,每一个字节都有一个序
号,每发送一次数据包都会携带一个***
④ Acknowledge Number:4Byte,确认***,如果收到对端的一个数据包,会查看包中
的***,并将***+对端ACK值的总和作为确认***返回给对端,表示此***的数据包已经收到,并期待收到下一个标识数据包的***是多少
⑤ Header Length:头部长度
⑥ Resv:6Byte,保留位,供往后应用,默认为0
⑦ URG:紧急比特URG,当URG=1时,注解此报文应尽快传送,而不要按本来的列
队次序来传送。与“紧急指针”字段共同应用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接管方可以知道紧急数据共有多长
⑧ ACK:确认比特ACK,默认为0,如果ACK=1时,确认***有效位,表明该数据包
包含确认信息
⑨ PSH:急迫比特PSH,默认为0,当PSH=1时,表示通知接收端立即将数据提交给用户
进程,不要在缓存中停留,等待更多的数据
⑩ RST:复位比特RST,默认为0,当RST=1时,注解呈现严重错误,必须开释连接,然
后再重建传输连接。
⑪ SYN:同步比特SYN, 当为1时,表示对端请求建立连接,TCP三次握手第一次时SYN
为1
⑫ FIN:终止比特FIN,为1时,表示数据发送完毕,请求断开连接
⑬ Window:2Byte,滑动窗口大小,,默示报文段发送方的接管窗口,单位为字节。此窗
口告诉对方,“在未收到我的确认时,你可以或许发送的数据的字节数至多此窗口的大小。”
⑭ Checksum:校验和
⑮ Urgent Pointer:紧急指针,当URG=1时,注解此报文应尽快传送,而不要按本来的列
队次序来传送。与“URG”字段共同应用,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号,使接管方可以知道紧急数据共有多长
⑯ Options: 选项值,
主机A(通常也称为客户端)发送一个标识了SYN的数据段,表示期望与服务器B建立连接,此数据段的***(seq)为100。
服务器B回复标识了SYN+ACK的数据段,此数据段的***(seq)为300,确认***为主机A的***加1(100+1),以此作为对主机A的SYN报文的确认。
主机A发送一个标识了ACK的数据段,此数据段的***(seq)为100+1,确认***为服务器B的***加1(300+1),以此作为对服务器B的SYN报文段的确认。
主机A想终止连接,于是发送一个标识了FIN,ACK的数据段,***为101,确认***为30。
服务器B回应一个标识了ACK的数据段,***为301,确认序号为101+1,作为对主机A的FIN报文的确认。
服务器B想终止连接,于是向主机A发送一个标识了FIN,ACK的数据段,***为301,确认***为101+1。
主机A回应一个标识了ACK的数据段,***为101+1,确认序号为301+1,作为对服务器B的FIN报文的确认。
以上四次交互便完成了两个方向连接的关闭。
拥塞窗口
a) 主机A想服务器发起连接,传输数据给服务器A
b) 服务器A回复ACK信息,同时携带窗口大小为3
c) 主机A收到ACK确认信息后,发现窗口大小为3,于是连续发送窗口大小为3的容量的数据包给服务器A
d) 服务器A收到数据包后,内存满,此时读取一个数据包,内存剩余为1,此时发送ACK确认,窗口大小为1
e) 主机A收到后,发送窗口大小为1的数据包给服务器A
UDP封装
16位源端口号:源主机的应用程序使用的端口号。
16位目的端口号:目的主机的应用程序使用的端口号。
16位UDP长度:是指UDP头部和UDP数据的字节长度。因为UDP头部长度为8字节,所以该字段的最小值为8。
16位UDP校验和:该字段提供了与TCP校验字段同样的功能