TCP协议-----传输控制协议
一种面向连接的可靠传输协议。
TCP协议建立的连接是双向连接。
面向连接:在数据传输之前,收发双方需要预先建立一条逻辑通路。
无面向连接。
---Source Port 是源端口
---Destination Port是目的端口,16位。
---Sequence Number是发送数据包中的第一个字节的序列号,32位。
---Acknowledgment Number是确认序列号,32位。
---Data Offset是数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4。
---Window表示接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度。
---Checksum是校验和,16位。
---Urgent Pointers是紧急指针,16位,只有URG标志位被设置时该字段才有意义,表示紧急数据相对序列号(Sequence Number字段的值)的偏移。
序列号
确认序列号
6位标志位
SYN---同步位---是在TCP三次握手建立通道时的标记
ACK---确认位---当该标记位置为1时,确认序列号有意义
FIN---代表释放TCP连接
URG---表示紧急标记位。当发送方希望一些数据尽快被接收方的上层拿到的时候,就需要用到这个标记位。通常需要搭配16位紧急指针使用,要传递的紧急数据混在普通数据里,16位紧急指针指明了紧急数据在普通数据中的具体位置。
PSH---表示催促标记位,可以理解为Push。Client在不断发数据,Server在不断接收数据同时在给Client发送应答,应答报文中包含了16位窗口大小的字段,其实就是在告诉Client自己接收缓冲区剩余空间的大小,以便于Client及时调整自己的发送速度。
RST---表示复位标记位,用于非正常的关闭连接。客户端因为主机崩溃或者网线断开,但是服务端认为对方还在。如果服务端长时间没有收到对方的数据,就会定期发送报文询问对方是否在线;客户端收到以后,由于连接不存在,此时就会发送携带RST标志位的报文来间接告诉服务端连接异常。
->TCP分段:因为IP分片后,TCP协议无法保证数据的可靠性传输;故而使用TCP协议进行封装的文件不允 许进行IP分片,而又因为MTU存在,需要将大文件分为小文件,该操作由TCP协议完成。
MSS---最大传输段===MTU-IP头部-TCP头部 在TCP协议中,每一个报文都需要有序列号信息。
可靠性
确认机制----每收到一个TCP数据段,都需要发送一次确认报文。
重传机制----超时重传,当一个数据段中的某个报文丢失,发送端会主动重新发送一次该报文。
排序机制----传输数据段时,被分为多个报文,从不同路径传输,最终达到目的地的顺序会被打乱, 需要根据序列号字段进行重新排序。
流控机制(滑动窗口机制)---可以通过调节窗口大小(Windows)来对流量进行控制
面向连接
三次握手(建立通道):
四次挥手(销毁通道):
MSL---120S,指一个数据包在网络中传递的最大时间。