TCP内功心法

 

 

               TCP内功心法

网络通信靠协议,经典协议TCP。

可靠传输无人比,润物无声似空气。

 

确定源头与目的,各十六位不可弃。

先传序列后确认,确认号码要加一。

四位首部偏移量,6位保留无含义。

六位协议状态位,最为重要无可替。

 

紧急指针URG,需要用时方为1。

确认标记标记ACK,一为有效零放弃。

PSH标志推应用,置为一时表完毕。

重连标志RET,网络异常很来气。

SYN同步位,网络连接要建立。

FIN完成位,值位一时将关闭。

 

窗口大小一十六,缓存大小别随意。

一十六位校验位,保证可靠最有力。

紧急指针十六位,顺序累加发紧急。

 

选项字段自定义,时间大小EOP。

数据字段为内容,发送信息很随意。

 

1.确定源头与目的,各十六位不可弃

    每次TCP通信都要表明信息发出的端口以及信息要被发送到的端口。就像写信一样,我们要写好是谁发出的,并且是要发送给谁。

 

2.先传序列后确认,确认号码要加一

    TCP作为可靠传输的协议,每次传输都要保证数据的顺序,所以每次发送数据的时候,都会带有一个数据包的序号。

    当接收方成功的接收到数据之后,回返回一个确认号码,确认号码为传输序号的值加一。

    例如:当前发送的数据包的序号是1001,当接收方成功接收到数据之后,回返回1002,表示刚才的数据已经收到,并且请求第1002号数据包。

 

3.四位首部偏移量,六位保留无含义

    首部偏移量有4bit,TCP协议的首部除了默认的20字节以外,用户还可以自定义一部分协议选项,所以需要通过首部偏移量来确定TCP首部实际有多长。

    在四位首部偏移量之后,是连续6位的保留空间,当前没有任何含义,默认值为0。

 

4.紧急指针URG,需要用时方为一

    当TCP协议需要传输临时的比较紧急的信息时候,会将URG字段置为1,当URG字段置为1之后,十六位紧急指针字段生效。

    十六位紧急指针指的是紧急数据的大小。

    传输序列号 加 紧急数据偏移量 为紧急数据的最后一个字节。

    紧急指针URG并不常用,因为在TCP协议早期的时候,NFC规范定义 传输序列号 加 紧急数据偏移量 为紧急数据的最后一个字节加一,所以当时许多的TCP服务都是按照这种规范来进行设计的,但是这其实是NFC规范的一个错误,后来NFC规范纠正了这个错误,将传输序列号加紧急数据偏移量定义为紧急数据的最后一个字节。

 

    所以当前的TCP服务有很多是遵循早期的NFC规范的,其中包括许多比较著名的机构,所以我们并不建议使用紧急指针。如果我们需要通过发送临时数据来通知接收端的时候,我们完全可以再开启一个TCP连接。

 

5.确认标记ACK,一为有效零放弃

当发送方发出一个数据包之后,如果接收方成功的接收到了这个数据包,就会将ACK字段标记为1,表示成功接收到数据包。

 

在很多公司中,当有人在群里发了一个通知之后,我们会发现会有很多人在群里回复ACK,这个梗就是出自这里。

 

6.push标志推应用,置为一时表完毕

当数据发送完成时,发送方会将push标志位(PSH)标记为1,当接收方接收到的数据包中的PSH标志位为1的时候,会将接收到的数据推送给应用层。

 

7.重连标志RST,网络异常很来气

实际的网络传输中,很有可能出现网络抖动或者断网的现象,当网络恢复的时候,发送失败的一方会重新发送信息,并将RST标志位标记为1,表示请求重连。

 

8.SYN同步位,网络连接要建立

当TCP连接刚开始建立的时候,请求方会将SYN信号位标记位1,表示请求建立连接,如果接收方成功的接收到了请求方的连接请求,在返回信息的时候,会将SYN标记位标记为1,表示成功地建立了连接。

 

9.FIN完成位,值为一时将关闭

当发送方将信息发送完成的时候,会将FIN标志位置为1,表示信息发送完毕,当接收方将最后一个数据包接到之后,也会将FIN状态位标记为1,表示所有的数据都接收完毕。当两方的都发出过FIN为1的信息之后,连接就会关闭。

 

10.窗口大小一十六,缓存大小别随意

窗口大小就是发送方一次发送信息的数据量,这个数据量取决于接收方的缓存大小,为了将TCP信息的传输效率最大化,一般我们的窗口大小不会大于当前剩余的缓存大小,以保证每次的数据传输都能进入缓存区。

 

11.一十六位校验位,保证可靠最有力

TCP作为可靠的传输协议,不但要保证数据传输顺序的正确,还要保证数据在传输过程中不会出现错误。

 

根据RFC 793的TCP校验和定义,首先,把伪首部、TCP报头,TCP数据分为16位的字,如果总长度为奇数个字节,则在最后添加一个位都为0的字节。把TCP报头中的校验和字段设置为0。然后,用反码相加法累加所有的16位字(进位也要累加)。最后,对计算结果取反,作为TCP的校验和。

 

12.紧急指针十六位,顺序累加发紧急

 

详细内容见第四点,紧急指针URG。

 

13.选项字段自定义,时间大小EOP

TCP字段的头部不止有默认字段的20字节,用户还可以使用一些自定义的首部字段,比如时间,内容大小,还有结束标记EOP。

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值