TCP协议
TCP协议全称 “传输控制协议” ,顾名思义,要对数据的传输有一个详细的控制。
TCP协议段格式
1.16位端口号(port number) 源端口号和目的端口号
2.32位序号(sequence number) 第一个、序号值被初始化为某个随机值ISN(initial sequence number) TCP报文是字节流第1025~2048字节,序号值是ISN+1025
3.32位确认号(acknowledgement number) 用作另一方TCP报文段相应。其值是收到TCP报文段序号值加1
4.4位头部长度(header length)标识TCP头部有多少个32bit字,最大为15,所以TCP头部最长60字节。
5.6位标志位
URG标志,表示紧急指针(urgent poinnter)是否有效
ACK标志,表示确认号是否有效
PSH标志,提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,腾冲空间
RST标志,表示要求对方重新建立连接。 带此标志的报文段称为复位报文段
SYN标志,表示请求建立一个连接。带此标志的报文段称为同步报文段
FIN标志,表示通知对方本端要关闭连接了。带此标志的报文段称为结束报文段
6.16位窗口大小(window size) 流量控制 告诉对方还能容纳多少个字节数据
7.16位校验和(TCP checksum)CRC校验头部和数据部分
8.16位紧急指针(urgent pointer) 正偏移量。他和序号字段的值相加表示最后一个紧急数据的下一字节的序号.发送紧急数据的方法。
TCP协议特点
(面向连接、字节流、可靠传输)
1.传输层主要的两个协议 、 UDP协议 和 TCP协议
2.TCP协议通信,双方必须建立连接,才开始数据读写。双方要为该链接分配必要的内核资源,用来管理连接的状态和连接上数据的传输。TCP连接是全双工的(双方数据读写可以通过一个连接),完成后,断开连接,释放系统资源。
3.TCP是一对一连接的,广播多播不能使用TCP服务。 UDP适合广播
4.TCP模块发送的TCP报文段个数和应用程序执行写操作没有数量关系,可能发送的数据分片处理。
5.应用程序读的次数和TCP报文段个数也没关系。读的大小,取决于读缓冲区的大小,TCP按照报文段的序号排好依次放入TCP接受缓冲区中哒。
6.应用程序对数据的发送和接受是没有边界限制的。UDP发送一次就要读一次,否则要丢包的,没有足够大小的读缓冲区,那UDP数据会被截断//
7.TCP采用发送应答机制,即发送端发送的每个TCP报文段必须得到接收方的应答,才认为TCP报文段传输成功。
8.TCP采用超时重传机制,发送一个TCP报文段后启动定时器,在定时器时间内未收到应答,则再次发送。
9.TCP报文段最终是以IP数据报发送的,而IP数据报到接收端很大可能是无序的重复的,TCP协议将对TCP报文重排,整理,再交给应用层。