凡亿专栏 | 面试不会TCP报文段首部格式?我教你啊
面试不会TCP报文段首部格式?我教你啊

很多工程师在面对考官面试时,经常被问到关于计算机网络的TCP/IP问题,尤其是TCP的报文段首部格式更甚,越简单常见的面试问题越不好回答,今天我们详细谈谈TCP的报文段首部格式,争取消除困惑。
TCP全称为Transmission Control Protocol,即传输控制协议,它的作用是提供面向连接的服务,在传送数据前必须建立连接(通过三次握手来建立),数据传送结束后要释放连接(通过四次握手来建立)。
需要注意的是,TCP不提供广播或多播服务,这是由于TCP要提供可靠的、面向连接的传输服务,这不仅使得TCP协议数据单元的首部增大很多,还要占用许多处理机资源,使用TCP一般用于文件传输、发送和接收邮件、远程登录等场景。
那么,TCP的报文段首部格式有哪些?
一般来说,TCP报文段的具体格式可以不必全记住,但部分几个控制位于三次握手和四次握手有关,所以需要牢记,具体如下:

d9b0d761afe717f4fd5fb0952899e6.png

源端口和目的端口:各占2个字节,分别写入源端口和目的端口(IP地址+端口号即可确定一个进程地址)
序号/序列号(Sequense Number,简称SN):表示TCP报文段所发送数据的第一个字节的序号,初始序号称为ISN。
确认号ack:期望收到对方下一个报文段的第一个数据字节的序号,若确认号为N,则表示到序号N-1位置的所有数据都已全部正确收到。
数据偏移:是指TCP报文段的首部长度。
保留:占6位,应置为0,保留为今后使用。
需要注意的是,如图所示,保留旁边有6个控制位,这是TCP用来说明该报文段性质的。
紧急位URG:当URG=1时,表示此报文段中有金技术,是高优先级的数据,应尽快发送,不用在缓存中排队,需配合紧急指针使用。
确认ACK:仅当ACK=1时,确认号字段才有效,当ACK=0时确认好号无效。而TCP规定在连接建立好所有传送的报文段必须将ACK置为1。
推送PSH:当两个应用进程进行交互式的通信时,若是一端的应用进程希望在键入一个命令后立即能接收到对方的响应,我们可采用推送操作,发送方将PSH置为1,并创建一个报文杜娜发送出去,接收方收到PSH=1的报文段,将尽快交付接收应用进程。
复位RST:当RST=1时,表示TCP连接中出现严重错误,必须释放连接再重新连接。
同步SYN:SYN=1是一个连接请求或链接接收报文。当SYN=1、ACK=0时,表示这是一个连接请求报文段,对方若同意连接则SYN=1、ACK=1。
终止FIN:用来释放一个连接。当 FIN = 1时,表明此报文段的发送发的数据已发送完毕,并要求释放运输连接。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论