博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
详解TCP协议中控制位及URG&PSH的区别
阅读量:4150 次
发布时间:2019-05-25

本文共 1363 字,大约阅读时间需要 4 分钟。


ForeWord


博主上篇博文介绍了TCP数据段格式,详情请戳这里()。并没有对其中的6个控制位做详细解释。

那么本文就给大家介绍这6个控制位的作用,并总结其中两个控制位URG&PSH的区别。

1

~tips:全文阅读需3min~


详解


6个控制位

TCP数据段中有6个控制位,他们的作用如下:

控制位 作用
ACK 置1时表示确认号合法,为0的时候表示数据段不包含确认信息,确认号被忽略。
PSH 置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送
RST 置1时重建连接。如果接收到RST位时候,通常发生了某些错误
SYN 置1时用来发起一个连接
FIN 置1时表示发端完成发送任务。用来释放连接,表明发送方已经没有数据发送了
URG 紧急指针,告诉接收TCP模块紧要指针域指着紧要数据

注:

  1. ACK为确认标志位。如果ACK为1,表示数据包中的确认号有效。

  2. RST标志位用来复位一条连接。当RST=1时,表示出现严重错误,必须释放连接,然后再重新建立。

  3. SYN标志位用来建立连接,如果SYN=1而ACK=0,表明它是一个连接请求;如果SYN=1且ACK=1,则表示同意建立一个连接。

  4. FIN为1时,表示数据已经发送完毕,希望释放连接。

不合法的标志位组合(全是互相矛盾,没有意义):

  1. 所有标志位都为0:

  2. SYN和FIN同时被置1

  3. SYN和RST同时被置1

  4. FIN和RST同时被置1。

  5. FIN位被置1,但ACK位没有被置1。

  6. PSH位被置1,但ACK位没有被置1。

  7. URG位被置1,但ACK位没有被置1。

再次理解TCP3次握手

了解到了TCP标志位的含义,就可以了解TCP的三次握手是怎么进行的了

  1. 发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手

  2. 接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手

  3. 最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手。

之后,一个TCP连接建立,开始通讯

URG&PSH

为什么URG不能和PSH标志位同时使用呢,我们再来审视一下两者的概念和特点:

1.URG(紧急位)

紧急标志位,表示的是此报文段中有紧急数据,将紧急数据排在普通数据的前面;当接受端收到此报文后后必须先处理紧急数据,而后再处理普通数据。

2.PSH(急迫位)

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

也就是说,当服务器的TCP接收到一个设置了PUSH标志的报文段时,它需要立即将这些数据(包括以前存中滞留的数据)递交给服务器进程而不能等待判断是否还会有额外的数据到达。

注:PSH=1只对接收方的接收缓冲区起作用。

到这里,你应该明白URG不能和PSH标志位同时使用的原因了:

如果发送方发给接收方一个既有URG,又有PSH的报文段,那接收方是先处理加URG的紧急数据,还是不管紧急数据和普通数据之分,立即顺序处理接收缓冲区的数据呢?

这不是为难人家么꒰╬•᷅д•᷄╬꒱

你可能感兴趣的文章
databinding双向绑定,带你玩转自定义view系列,先收藏了
查看>>
flutter开发工具,一篇文章教你搞定计算机网络面试,吐血整理
查看>>
flutter开发桌面应用,如何才能通过一线互联网公司面试?已开源
查看>>
flutter技术入门与实战!妈妈再也不用担心我的面试,隔壁都馋哭了
查看>>
Flutter最新开源框架,已拿到offer
查看>>
flutter音视频开发,小程序FMP优化实录,已拿offer入职
查看>>
Github标星25K+超火的Android实战项目,Android篇
查看>>
Github标星25K+超火的Android实战项目,帮你突破瓶颈
查看>>
retrofit教程,HTTPS面试常问全解析,真香
查看>>
retrofit源码,Android开发者出路在哪?通用流行框架大全
查看>>
rrxjava原理,Android社招最全面试题,全网疯传
查看>>
vue双向绑定原理,骚年你的屏幕适配方式该升级了,已整理成文档
查看>>
vue如何实现数据双向绑定,BAT这种大厂履历意味着什么?值得收藏!
查看>>
vue数据双向绑定,Android免打包多渠道统计如何实现?威力加强版
查看>>
websocketapp保活,大厂offer手到擒来,经典好文
查看>>
【大牛疯狂教学】15个经典面试问题及回答思路,原理+实战+视频+源码
查看>>
【大牛疯狂教学】阿里面试100%会问到的JVM,面试必备
查看>>
【好文推荐】Android-App的设计架构经验谈,技术详细介绍
查看>>
细节决定成败!一个Android应届生从上海离职,学习路线+知识点梳理
查看>>
细节决定成败!阿里P8架构师的Android大厂面试题总结,实战解析
查看>>