TCP首部(报头)理解 |
您所在的位置:网站首页 › tcp报文最大长度为多少位 › TCP首部(报头)理解 |
TCP作为网络模型中正数或者倒数的第4层,其实是一个协议,可以理解为操作系统的一个TCP进程,为数据传输提供稳定可靠的通道。一个TCP报文是由首部(报头)+数据组成,其中报头尤其重要。 TCP首部图片来源与网络 一个TCP报文段的首部前面20个字节是固定的,而后面有4n个字节是根据需求而增加的选项(n为整数且最大为10),因此TCP报文段的首部最小长度是20个字节,最大长度是60个字节 源端口和目的端口:各占2个字节(16bit),区分主机的不同进程 序号:占4个字节(32bit),记录数据部分第1个字节的序号是多少 确认号:占4个字节(32bit),期望收到对方下一个报文的第1个数据字节的序号。例如:B收到A的报文,序号是100,此时B要向A发送确认号101,意味着A下次要给B发送序号为101的报文 4位首部长度:占4bit,也叫数据偏移,表示TCP报头的长度,由于TCP报头前20个字节都是固定的,但是可能会有4*10个字节是不固定的,所以TCP报头最大能到60个字节,这个字段就是用来精确记录TCP报头长度的 保留:占6bit,保留为今后使用,但目前因置为0 标志位:每一个标志占1bit,一共6bit。 URG:当这个标志置为1,说明此报文是紧急报文,需尽快传递ACK:当这个标志置为1,上面的确认号字段才会生效,当3次握手结束时此标志置为1PSH:较少使用RST:当这个标志置为1,此时TCP连接发生严重错误SYN:建立连接的同步序号,SYN=1,ACK=0,发送请求,对方同意后,则响应中SYN=1,ACK=1FIN:释放连接,FIN=1,表示此次报文发送方发送的数据已经发送完毕,并要求释放TCP连接窗口:占2个字节(16bit),滑动窗口,流量控制问题 检验和:占2个字节(16bit),如果接收的报文检验和有误,则丢弃此报文 紧急指针:只有URG为1是有效,表示报文中紧急数据的字节数 选项:长度可变,为4n个字节(n最大=10) 三次握手: 请求方(客户端)发送请求,将SYN置为1,假设seq=100,发送到接收方,一般来讲就是服务端服务端接收请求报文,也将自己的SYN置为1,并且将ack=100+1,seq假设200,回传给请求方也就是客户端客户端收到服务端报文,将ack置为200+1,并且发送给服务端TCP是注重双向通信,面向连接的,上述第2步骤是将服务端的收发合并为一次进行。第2步发送到客户端是校验客户端的通信正常,第3部发送到服务端是让服务端知道自己的通信正常,所以一共是3次握手 四次挥手任何一方主动发起都是可行的,假设客户端发起 图片来源网络 2MSL是最大报文生存时间,如果网络不可靠,有可能最后一个ACK丢失,所以会在这个时间内重发ACK报文 UPDUDP是面向无连接,只管扔,收不收做强制,只要扔的多,可以保证收的也不少。 UDP只有两个字段,首部字段+数据字段。首部字段8个字节(64bit)由4个字段组成,每个占2个字节(16bit) 源端口:需要接收方回应时才用,不需要可置为0目的端口:在终点交付报文时必须使用长度:UDP数据报文的长度,最小时8字节(64bit)检验和:检验报文传输过程中是否有误 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |