初识TCP(一):报文段首部分析

2017-06-28 18:05 阅读 770 次 评论 0 条

只要面试涉及网络,TCP是不可避免的考点,无论是三次握手、四次挥手,还是差错控制、流量控制,都足以让你瞠目结舌。我们只有循序渐进,才能真正掌握TCP,本篇就TCP的首部作以分析。

TCP分段格式

TCP协议的数据单元被称为分段(Segment),它主要由两部分组成:

① 分段头:TCP为了实现端到端可靠传输所加上的控制信息。

② 数据:指由高层即应用层而来的数据。

下图是TCP分段头与数据的主要格式,相关字段说明如下:

源端口:占16比特,分段的源端口号。

目的端口:占16比特,分段的目的端口号。

序列号:占32比特,分段的序列号,表示该分段在发送方的数据流中的位置,用于确保数据到达的顺序。

确认号:占32比特,下一个期望接收的TCP分段号,相当于是对方所发送的并已被本方所正确接收的分段的确认。顺序号与确认号共同用于TCP服务中的确认、差错控制。

报头长度:TCP头长,以32位字长为单位。实际上相当于给出数据在数据段中的开始位置。

保留:占6比特,为将来的应用而保留,目前置为"0"。

窗口:占32比特,窗口的大小表示发送方可以接收的数据量,单位为字节。使用可变大小的滑动窗口协议来进行流量控制。

校验位:占32比特,用于对分段首部和数据进行校验。通过将所有16位字以补码形式相加,然后再对相加和取补,正常情况下应为"0"。

紧急指针:占16比特,给出从当前顺序号到紧急数据位置的偏移量。

填充:当任选项字段长度不足32位字长时,需要加以填充。

数据:来自高层即应用层的协议数据。

编码位:占6比特,分为:URG、ACK、PSH、RST、SYN、FIN具体分析如下:

服务拒绝式攻击(DOS攻击):TCP连接的数目是有上限的,如果被一直连接或连接上不释放,就属于异常连接占用资源,为了保护自己,TCP协议会向对端客户端发送RST请求来断开连接。

URG-PSH联系与区别

URG:紧急标志位。当URG=1时,表明报文段中含有紧急数据,需要优先处理,之后在处理普通数据。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

PSH:催促标志位。当PSH=1时,TCP会立即创建一个报文并发送,接收端收到PSH=1的报文后,立即将接收缓冲区内数据向上交付给应用程序,而不是等待缓冲区满了之后再交付。

PSH标志是为了提示接收端的应用程序应该立即从TCP的接收缓冲区中拿走数据,为接收后续的数据腾出空间。

URG与PSH的区别:

两者都可理解为处理紧急数据的标志位,只是处理方法不同。URG的紧急数据仅在报文内,而PSH的紧急数据还在接收缓冲区内。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:初识TCP(一):报文段首部分析 | 术与道的分享
分类:网络与安全 标签:, ,
1024do.com导航_术与道导航平台

发表评论


表情