背景
传输层协议:主机应用程序之间端到端的连通性。
-
TCP: Transmission Control Protocol
-
UDP: User Datagram Protocol
目标:
-
TCP和UDP的工作原理
-
TCP和UDP的报文格式
-
常见服务器的应用端口号
TCP
-
位置:
-
TCP/IP模型中的传输层
-
-
作用:
-
面向连接的端到端协议,作为传输控制协议,为主机提供可靠的数据传输。
-
-
-
架构
-
TCP端口号
-
-
作用:
-
区分不同的网络服务
-
端口号+源IP+目的IP组合唯一标识了一个会话。
-
-
-
分类:
-
知名端口:固定的端口
-
FTP/HTTP/Telnet/SNMP服务
-
-
动态端口:不固定的分配给某个服务
-
范围1024----65535
-
-
-
-
TCP头部
-
-
TCP数据包
-
网络层协议ip+TCP数据段
-
-
TCP数据段
-
TCP Header:最多60字节/若不含Options则长度为20字节(如上图)
-
16位源端口号
-
源主机的应用程序的端口号
-
-
16位目的端口号
-
目的主机的应用程序使用的端口号
-
-
32位序列号
-
重组数据(标识发送的不同TCP数据段的序号)
-
-
32位确认序列号
-
标识接受端确认收到的数据段。收的的序列号+1
-
-
4位头部长度
-
头部占32bit字的数目,它能表达的TCP头部最大长度为60字节
-
-
16位窗口大小
-
表示接受端期望通过单词确认而收到的数据的大小。字段为16位,所以窗口的最大值为65535字节,此机制通常用于流量控制
-
-
16位校验和
-
校验整个TCP报文段,包括头部和数据。
-
-
-
TCP Data
-
-
-
-
TCP建立连接的过程
-
-
-
TCP三次握手建立可靠的连接
-
主机A发送SYN 同步序列编号(Synchronize Sequence Numbers)数据段:表示期望与服务器A建立连接
-
序列号seq=a
-
-
服务器回复SYN+ACK 确认编号(Acknowledgement Number)数据段
-
seq=b,ack=a+1(确认对主机A的SYN报文)
-
-
主机A发送ACK数据段
-
seq=a+1,ack=b+1,(确认对服务器A的SYN报文)
-
-
-
-
TCP传输过程
-
-
-
就是通过SYN和ACK的重复发送及确认来进行对数据的准确性验证
-
目的设备收到源设备发送的数据段会向源端发送确认报文,源设备收到确认报文后,继续发送数据段,重复
-
-
TCP流量控制
-
-
-
TCP滑动窗口技术:
-
通过动态改变窗口大小来实现对端到端设备之间的数据传输进行流量控制。
-
上图仅仅是服务器通过滑动窗口进行流量控制
-
主机的窗口大小为4096字节;
-
服务器收到第三个数据段后,缓存区满,丢弃第四个数据段。
-
服务器ACK=1024*3+1=3073进行响应;
-
窗口大小调整为3072(表明缓冲区只能处理3072个字节的数据段。于是主机就改变了其发送速率为3072窗口大小的数据段)
-
-
-
-
TCP关闭连接
-
-
-
主机关闭连接之前:确认收到来自对方的ACK
-
TCP支持双工模式传输数据
-
同一时刻两个方向都可以进行数据的传输
-
TCP的连接建立是两个方向,所以断开也是两个方向都关闭
-
-
TCP四次握手断开连接
-
主机A发送终止连接数据段:FIN+ACK数据段
-
seq=a,ack=b
-
-
服务器回应ACK数据段
-
ack=a+1,seq=b
-
-
服务器想终止连接:FIN+ACK数据段
-
seq=b,ack=a+1
-
-
主机A回应ack数据段
-
seq=a+1,ack=b+1
-
-
两个方向的连接关闭
-
-
UDP(适用于实时数据传输--语音/视频)
-
UDP:面向无连接的传输层协议,不可靠()
-
-
应用:
-
应用程序对可靠性需求不高时,对传输速率和延迟较高时,用UDP协议代替TCP协议在传输层控制数据的转发。
-
-
构架
-
-
UDP头部:8字节;无确认机构
-
UDP报文
-
UDP报文头
-
16位源端口
-
16位目的端口
-
16位报文长度
-
16位校验和
-
-
UDP数据区域
-
-
-
传输过程
-
-
特点:
-
无序列号,需要应用程序提供报文到达确认,排序和流量控制。
-
-
优点:
-
不提供重传机制,占用资源小,处理效率高
-
时延低
-
eg:丢包后TCP需要重发该数据段;UDP少量数据的丢失一般忽略。
-
-
-
提问:
-
TCP报文头部的确认标识有什么作用收到数据的确认
-
TCP报文头部参与TCP三次握手的标识有哪些SYN,ACK标志