【每周分享】TCP协议的报文到底长啥样?不要急,Wireshark抓包告诉你 TCP协议即TransmissionControl Protocol传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP协议的报文格式如下图所示为了便于大家更好地理解TCP协议作者通过Wireshark工具捕捉TCP报文并对照TCP协议格式进行详细讲解。抓取的报文数据如下图红色方框所示双击打开后里面的标注了Transmission Control Protocol的即为TCP报文如下图红色方框所示1、源端口Source PortTCP/IP协议中的端口是一种逻辑意义上的端口端口号的范围为0~65535即两个字节通信发起者的端口号总共16位2字节对应报文为0x01bb即443其实433是一个比较常见的端口号又称网页浏览端口主要是用于HTTPS服务是提供加密和通过安全端口传输的另一种HTTP80端口。所以如果你了解433端口那就可以知道该TCP报文就是关于HTTPS协议方面的通信内容。另外以下也列举了一些常见的网络协议对应的端口值‌HTTP80端口‌‌HTTPS443端口‌FTP21端口‌‌SSH22端口Telnet23端口‌SMTP25端口‌DNS53端口POP3110端口‌IMAP143端口‌RDP3389端口‌。2、目的端口Destination Port通信接收者的端口号总共16位2字节对应报文为0x1d82即75543、序号Sequence NumberTCP连接中传送的数据流里面的每一个字节都会编上一个序号而序号字段的值指的是本报文所发送的数据的第一个字节的序号总共32位4字节对应报文为0x1eb2a102即515023106Sequence Number: 1是Wireshark自行减去的相对序号Sequence Numberraw是原始序号绝对序号Next Sequence Number: 1 指的该方向下一包的序号不在报文数据流中是Wireshark自行解析的。4、确认号Acknowledgment Number期望收到对方的下一个报文的数据的第一个字节的序号总共32位4字节对应报文为0xa16f72be即2708435646AcknowledgmentNumber: 2是Wireshark自行减去的相对序号AcknowledgmentNumberraw是原始序号绝对序号。5、数据偏移首部长度Header Length该字段指出TCP报文的数据起始处距离TCP报文的起始处有多远即TCP报文的首部长度单位是32位字(以4字节为计算单位)总共4位最大1111b可以表示15即数据偏移的最大值是15*460个字节即TCP首部的最大字节是60字节即选项字节不能超过40字节TCP首部最大字节数-固定首部字节数对应报文为二进制1000即8因此该报文的首部长度是8*432字节6、标志位Flag涉及的标志位及作用如下所示保留位6位暂未使用UrgentURG紧急1位为1时即告诉系统此报文中有紧急数据需要尽快发送AcknowledgmentACK确认/应答1位为1时确认号字段才有效PushPSH1位推送为1时应尽快交付接收应用进程不等到整个缓存都填满再向上交付ResetRST复位1位为1时表示TCP连接中出现严重错误需要释放连接后再重建连接还用来拒绝一个非法的报文段或拒绝打开一个连接。SynSYN同步1位建立连接的时候使用即当SYN1ACK0时为请求连接当SYN1ACK1时为同意连接的请求应答FinFIN终止1位用来释放一个连接即为1时表明此报文的发送端的数据已发送完毕并要求释放连接对应报文为0x010里面的TCP Flags后面的内容即表示当前哪些标志位被置1了比如该报文里是ACK标志位被置1了则对应显示首字母A。比如下面的报文是SYN标志位被置1了则对应显示首字母S7、窗口Window接收端的接收窗口的大小是一种流量控制手段起始于确认序号字段指明的值这个值是接收端正期望接收的字节总共16位2字节对应报文为0x0099即1538、校验和Checksum这个字段大家应该都比较熟悉经常在通信协议中用来监测数据通信过程中是否出现错误报文总共16位2字节对应报文为0x7b4e9、紧急指针Urgent Pointer该字段指出在本报文中共有多少个字节的紧急数据紧急数据放在本报文的数据的最前面总共16位2字节对应报文为0x0000即该报文里面没有紧急数据10、选项和填充Options And Padding该字段的长度可变当没有使用“选项”时TCP的首部长度是20字节其最大长度可根据TCP首部长度进行推算其长度即为TCP首部最大字节数-固定首部字节数最长可达40字节对应报文为总共12字节其实也就是该报文的TCP首部长度32-固定首部201211、数据Data如果有数据的话就会存在该字段为不定长度。以上通过Wireshark工具捕捉的TCP协议报文对TCP协议的各个字段进行了详细阐述希望可以加深大家对TCP协议的理解如有不足之处欢迎来贴补充和分享~~。---------------------作者dffzh链接https://bbs.21ic.com/icview-3473620-1-1.html?_dsign7d74ed3a来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。