TCP协议

TCP报文格式

源端口和目的端口

各自占用两个字节,用来表示主机中的通信进程。端口号和IP组合即为套接字

序号

也叫发送序号,TCP将发送的每一个数据流都进行了编号,整个数据的起始序号在开始连接的时候设置

确认序号

指接受主机期望收到的下一个报文序号是多少

数据内容

又称为首部长度,标明TCP首部数据包的长度,单位是四个字节

六个控制字符

URG

紧急指针有效位

ACK

确认连接,1为有效

PSH

要求对方数据尽快达到应用层

RST

连接出现问题,需要重新建立连接

SYN

进行连接的建立

FIN

断开连接,提出断开连接的一方的FIN为1

窗口

告诉对方自己的窗口大小,用于流量控制

检验和

检验报文内容的正确性

紧急指针

当URG有效时,紧急指针便有效。紧急指针用来在紧急情况下进行数据的传输

选项和填充

可有可无,对数据的额外控制

URG的详细介绍

紧急指针指出了紧急数据的末尾在报文段中的位置。

当所有紧急数据都处理完毕后,TCP就告诉应用程序恢复到正常的操作。

注意:即使窗口为0时,也可以发送紧急数据 。

URG=1告诉系统此报文段中有紧急数据,应当尽快传送(相当于高优先级的数据),而不是按照原先的顺序来传送。

URG运用实例

我们现在在运行一个程序,改程序需要运行很长的时间,但是突然发现程序里面有一个错误,需要及时的去进行修改,所以我们通过键入Ctrl-C给系统发送一个终止信号。

如果我们不使用紧急数据的话,这两个字符将存储在接受TCP的缓存的末尾,只有在所有数据处理完毕之后我们才能将这两个字符交付给接收方的应用程序,这样似乎就失去了提前终止的意义了。

所以,我们通过及时的设置URG=1,告诉发送方此时有紧急数据需要传输,于是发送方TCP就将紧急数据插入到本段报文数据段的最前方,这些数据就叫做“带外数据”,而在紧急数据后面的就是正常的普通数据了。

特性

(1)紧急数据的起始点 = 序号

(2)紧急数据的终止点 = 序号+紧急指针

(3)紧急指针就是记录紧急数据的字节数,紧急指针永远为正数

(4)在紧急数据后面的数据为普通数据,需要按序缓存

(5)可以在窗口为0时发送紧急数据

(6)紧急数据都处理完成后,tcp就告诉进程恢复到正常操作

(7)URG强调的是直接读取数据,不会将该数据复制到缓存中

PSH的详细介绍

推送PSH,PSH叫做急迫位。

当两个应用程序进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。

在这种情况下,TCP就可以使用推送(push)操作。

这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。

接受方TCP收到PSH=1的报文,就尽快地(即“推送”向前)交付接受应用程序,而不再等到整个缓存都填满了后在向上交付。

(注:虽然应用程序可以选择推送操作,但是推送操作还很少使用)

PSH的使用实例

在一个交互程序中,当客户发送一个命令给服务器时,它设置PUSH标志并停下来等待服务器的响应。

通过允许客户应用程序通知其TCP设置PUSH标志,客户进程通知TCP在向服务器发送一个报文段时不要因等待额外数据而使已提交数据在缓存中滞留。

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

PSH=1,只对接收方的接收缓冲区起作用,发送方通过使用PUSH位来通知接收方将所有收到的数据立即提交给服务器进程,而不需要等待额外数据(将缓存填满)而让数据在缓存中停留!

这里所说的数据包括与此PUSH包一起传输的数据以及之前就为该进程传输过来的数据(滞留在缓存中的数据)。

特性

(1)PSH=1表示该报文希望在到达对端时,将这个报文及缓存区之间缓存尚未交付的数据一并交付给进程。

(2)PSH的数据=本报文数据+缓存区数

(3)PSH的方向--->单方向(接收PSH报文的一端)

(4)PSH强调的是尽快将数据交付给上层(协议),而不需要经过强迫数据交互(默认tcp/ip是将数据缓存到一定的上限,再将数据递交给上层,以提高网络性能).可见,该部分数据是需要复制到缓存中的

总结

相同点

他们都是对数据的一种处理方式,URG和PSH都用于紧急情况的处理

不同点

(1)发送方式不同。URG是前端,PSH是后端。

(2)URG置为1时,对于发送方,“带外数据”与正常情况下应该发送的消息数据一起,封装成数据报发送,省去了在队列中等待的时间。

(3)在接收方,解析报文后,获取数据之后还是要放在缓存区中,等待满了之后在向上往应用层交付。 PSH置为1时,对于发送方,表明这些数据不需要等向下发送的缓存区满,立刻封装成报文,发送,省去了等待发送缓存区到达满的状态的时间。  (4)在接收方,也不需要等接受缓存区满,直接向上交付给应用层

tcp linux 报文内容,【Linux】TCP报文中的PSH和URG字段的介绍相关推荐

  1. tcp linux 报文内容,linux – tcpdump – 只是逐行输出数据包内容

    我正在尝试在DEFCON数据包上使用tcpdump. 这是我正在使用的命令: tcpdump -qns 0 -X -r ulogd.eth0.pcap 这是我得到的输出: 10:39:12.35641 ...

  2. TCP——SYN、ACK、FIN、RST、PSH、URG详解

    三次握手Three-way Handshake     一个虚拟连接的建立是通过三次握手来实现的     1. (B) --> [SYN] --> (A)     假如服务器A和客户机B通 ...

  3. linux输出管道内容,Linux 输入/输出和管道(|)及相关的命令

    此简书不再维护. 在系统默认情况下,shell从键盘读(接收)命令的输入,并将命令的输出显示(写)到屏幕上.shell的标准命令输入是Standard Input,标准输出(Standard Outp ...

  4. 删除 linux 回收站内容,Linux删除文件实现回收站功能

    从事过服务器维护的人都知道rm.rm -rf 的厉害,执行起来一点也不马虎,有点六亲不认的感觉.刚开始我也没觉得rm的厉害,经过昨天rm掉我几天的工作量,我才发现rm就是一把双刃剑,幸好我的服务器有打 ...

  5. linux inittab内容,Linux inittab文件详解

    1.inittab定义与位置 系统启动时,会运行init程序.启动init程序时,init程序会去读取/etc/inittab文件,根据/etc/inittab中设置的数据进行系统初始化的工作. in ...

  6. linux注释内容,Linux 中snmptrapd的内容有大虾能帮我注释下吗?谢谢了

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #!/bin/bash                                   #表示下面的脚本是用bash编写的,必须调用bash程序对它解 ...

  7. linux 比较内容,Linux命令比较文件内容

    redis 密码配置 http://blog.csdn.net/vtopqx/article/details/46833099 http://www.2cto.com/database/201412/ ...

  8. 鸟哥linux+韩顺平linux视频教程学习小结

    linux的特点 优点: 1.免费的/开源的系统 2.支持多线程/多用户的系统 3.安全性好 4.对内存和文件管理优越 linux体积最少只需要内存4M,由于小所以可以做嵌入式开发 缺点: 操作相对困 ...

  9. linux日期日增,Linux日期

    Linux date命令 Linux date命令用于显示日期,时间,时区等.它还用于设置Linux系统的日期和时间.通常,它用于以不同的格式显示日期并计算一段时间内的日期. 句法: 选件 以下是da ...

最新文章

  1. 语音识别Kaldi开源
  2. 关于Android中工作者线程的思考
  3. 像QQ一样输入表情图像
  4. Oracle发布Oracle数据库的官方Node.js驱动node-oracledb
  5. 命令行 sql 将结果导出到文件
  6. android快牙原理,快牙的使用原理是什么_快牙怎么使用_3DM手游
  7. 《微观经济学》第三章相互依存性与贸易的好处
  8. 互联网金融数据分析指标
  9. python语料库_NLPPython笔记——语料库
  10. IT培训机构那些让人恶心的招生手法
  11. 基于PHP的驾校预约管理系统
  12. WEB短信平台定制 短信系统构建 路由通道搭建 web版短信后台管理系统 概括简介
  13. C# Revit二次开发基础/核心编程---建筑建模-标高和轴网
  14. 很好的源码软件列表,有助于学习提高
  15. 2022-12-01
  16. 简述关系数据库的数据完整性规则_数据库的关系完整性
  17. 详尽分析:AV终结者采用重定向劫持技术(转)
  18. 机器学习和深度学习路线
  19. flink sql 知其所以然(十四):维表 join 的性能优化之路(上)附源码
  20. OD 如何设置/选择高亮方案

热门文章

  1. HashMap.entrySet( )分析
  2. 怎么用photoshop改变图片背景天空
  3. maven打war包配置
  4. freeswitch+soundtouch 变声测试失败
  5. 2016年计算机一级ps试题,2016年计算机一级photoshop模拟试题
  6. 采伐迹地和火烧迹地属于直林地_林地管理
  7. 部署 Node.js 项目详细流程
  8. 中蜂几月份自然分蜂_中蜂分蜂时间是什么时候?
  9. VIM 将一个文件中的多行复制到另一个文件
  10. linux编译文件系统只读,Linux文件系统只读及修复方法