1、了解网络 TCP/IP 五层协议模型
2、传输的2个重要协议,UDP 协议和 TCP 协议。
3、每层协议的数据格式都分为『标头』和『数据』两部分,标头部分包含发送者和接受者标识性信息等。我们知道传输层协议的功能建立程序到程序之间的链接
4、相较于UDP 协议 的无连接不可靠,TCP 协议可靠有链接的,当然也就要付出一定代价来实现可靠性,协议段格式也就更复杂,对数据的处理也就更复杂。
一、TCP协议段格式
相比于UDP协议,TCP协议首部长度是变长的(20个字节的基本信息+选项部分)
报文首部中各个部分的含义:
-
源端口号和目的端口号
表示数据来自哪个进程和准备发送给那个进程 -
32位序号
表示准备发送给对端的报文起始序号 -
32位确认序号
对对端报文的接收确认以及期待下次接收的报文序号 -
4位首部长度
以4字节位单位表示首部大小,因为有固定首部,首部大小位20-60字节 -
6位保留字段
保留给后面用(暂时没有用到) -
6位标志位
1.URG : TCP协议是面向字节流的,数据都是按序到达的,但是有时候我们因为需求要先处理某部分比较紧急的数据,这时候发送方就将URG标志设置为有效,搭配协议中的16位紧急指针,优先处理紧急数据
2.ACK : 表示确认号是否有效,一般情况下,除了第一次报文之后,其他的报文都设置ACK有效
3.PSH : 在数据传送过程中,有可能接收方应用层了来不及处理接收的数据,导致接收方的窗口满了,此时发送方就需要时不时的进行探测接收方是否有能力继续接收数据,此时报文段中就会设置PSH标志位有效,表示希望接收端应用程序立刻从缓冲区将数据拿走
4.RST : 表示对端要求重新建立连接,携带该标志的称为复位报文段
5.SYN : 请求建立连接,携带该标志的称为同步报文段
6.FIN : 关闭连接通知,携带该报文的称为结束报文段 -
16位窗口大小
表示在后面保证可靠性传输时提及的窗口的大小,表示自己目前的接收能力的大小,即当前空闲的接收缓冲区的大小,用于流量控制 -
16位校验和
CRC校验,接收端经过计算CRC来判断数据是否有误,不仅校验数据还要校验首部 -
16位紧急指针
用来标识哪些数据是需要紧急处理的,搭配URG标识使用 -
选项
说明一些其他首部部分的信息,例如配合窗口大小的窗口扩大因子