一、TCP

1.源端口和目的端口:各占2个字节。

2.序号:占4字节。序号范围是0~2^32-1。TCP是面向字节流的,TCP连接中传送的字节流中的每个字节都按顺序编号。整个要传送的字节流的起始序号必须要在连接建立时设置。首部中的序号字段值指的是本报文段所发送的数据的第一个字节的序号。

3.确认号:4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。
若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。
4.数据偏移:4位。指出TCP报文段的数据起始处距离报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的。单位是32位字,也就是4字节,4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节

5.保留:6位
下面有6个控制位说明本报文段的性质

6.紧急URG:1位
当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如,已经发送了很长的一个程序在远地的主机上运行。但后来发现了一些问题,需要取消该程序的运行。因此用户从键盘发出中断命令(Control+c)。如果不使用紧急数据,那么这两个字符将存储在接收TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才被交付接收方的应用进程。这样做就浪费了许多时间。

当URG置为1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍时普通数据。这时要与首部中紧急指针字段配合使用。

7.确认ACK
仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有的传送的报文段都必须把ACK置1。

8.推送PSH
当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应。在这种情况下,TCP就可以使用推送操作。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后向上交付。

虽然应用程序可以选择推送操作,但推送还很少使用。

9.复位RST
tcp连接出现严重差错时释放连接,然后重新建立连接。而可以用来拒绝一个非法的报文段或拒绝打开一个连接。

当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。

10.同步SYN
在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在相应的报文段中使用SYN=1和ACK=1。因此,SYN置为1就表示这是一个连接请求或连接接受保温。

11.终止FIN
用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。

12窗口 占2字节。窗口值是【0,2^16-1]之间的整数。窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。窗口值告诉对方: 从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。总之,窗口值作为接收方让发送方设置其发送窗口的依据。并且窗口值是经常在动态变化着。

13.检验和:2字节。检验范围包括首部和数据两部分。和UDP用户数据报一样,在计算校验和 时,要在TCP报文段加上12字节的伪首部。

14.紧急指针:2字节。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。因此,紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完时,TCP就告诉应用程序恢复到正常操作。值得注意的是,即使窗口为零时也可发送紧急数据。

15.选项:长度可变,最长可达40字节。当没有使用“选项”时,TCP的首部长度是20字节。
1)MSS 最大报文段长度
MSS最大报文段长度(数据字段的最大长度,默认是536字节)。MSS不宜设的太大也不宜设的太小。若选择太小,极端情况下,TCP报文段只含有1字节数据,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,网络的利用率就不会超过1/41。若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。当传输出错时还要进行重传,这些也都会使开销增大。

因此MSS应尽可能大,只要在IP层传输时不需要再分片就行。在连接建立过程中,双方都把自己能够支持的MSS接入这一字段,以后就按照这个数值传送数据。
2)窗口扩大
窗口扩大选项是为了扩大窗口。TCP首部中窗口字段长度是16位,因此最大窗口大小就是64k字节。对于包含卫星信道的网络可能是不够用的。可以在双方初始建立TCP连接的时候就进行协商。
3)时间戳(计算RTT,防止序号绕回)
A. 用来计算往返时间RTT。发送方在发送报文段时把当前时钟的时间值放入时间戳字段,接收方在确认该报文段时把时间戳字段值复制到时间戳回送回答字段。因此,发送方在收到确认报文后,可以准确地计算RTT来。
4)选择确认选项
二、UDP

UDP协议分为首部字段和数据字段,其中首部字段只占用8个字节,分别是个占用两个字节的源端口、目的端口、长度和检验和。

TCP和UDP报文头格式相关推荐

  1. TCP和UDP报文头格式(转)

    一.TCP    1.源端口和目的端口:各占2个字节. 2.序号:占4字节.序号范围是0~2^32-1.TCP是面向字节流的,TCP连接中传送的字节流中的每个字节都按顺序编号.整个要传送的字节流的起始 ...

  2. IP、TCP、UDP报文头说明

    IP报文头(大端字节序) 版本: 通常值为4(IPv4) 首部长度: IP头长度 表明包含多少个32Bit 包括可选头(如果有) 值为IP头大小除以4 如:没有可选头IP头为20字节 则该值为5 服务 ...

  3. TCP/IP 主要报文头格式

    TCP/IP协议是一个比较复杂的协议集,有很多专业书籍介绍.在此,我仅介绍其与编程密切相关的部分:以太网上TCP/IP协议的分层结构及其报文格式.我们知道TCP/IP协议采用分层结构,其分层模型及协议 ...

  4. tcp,udp报文最大长度

    tcp,udp报文最大长度是怎么样的呢? 先来看看各个报文格式: ip报文 tcp报文 udp报文 ip和udp都有16位的长度字段,所以ip和udp报文的最大负载长度应该为2^16,64KB 网络层 ...

  5. 路由器NAT功能如何转发数据(路由器对ICMP、TCP、UDP报文处理)

    目录 一.引言 二.以太网帧及IP数据报格式回顾 三.路由器对ICMP.TCP.UDP报文处理 3.1.路由器对ICMP报文处理 3.2.路由器对UDP报文处理 3.3.路由器对TCP报文处理 四.遗 ...

  6. TCP和UDP报文格式

    TCP报文格式 源端口(Source port)和目的端口(Destination port) 各16 bits.IP地址标识互联网中的不同终端,端口号标识终端中的不同应用进程,具有本地意义.32位I ...

  7. 转载一个很经典的--C# Socket TCP和UDP报文及端口测试工具的开发(提供源码)

    转载地址:http://www.ltmonitor.com/blog/?p=285 因为自己经常做Socket开发,经常要调试各种协议,如TCP.UDP和SIP等协议,还要维护多个服务器端和客户端的通 ...

  8. TCP、UDP的首部格式及其含义

    一.TCP报文段的首部格式 TCP是面向字节流的 TCP在发送数据时,从发送缓存中取出一部分或全部字节并给其加上一个TCP首部,使其成为TCP报文段然后交给网络层(TCP是运输层,其下层是网络层) ​ ...

  9. TCP、UDP报文格式

    TCP首部格式 16位端口号 (port number): 告知主机该报文段是来自哪里 (源端口) 以及传给哪个上层协议或应用程序(目的端口)的,进行TCP通信时,客户端通常使用系统自动选择的临时端口 ...

最新文章

  1. netty使用从0到1
  2. 什么是断点,为什么要设置断点?断点的作用是什么?
  3. 谨防电子邮件泄露数据
  4. Nmap命令的常用实例
  5. centos7 安装 mysql8 强制修改密码
  6. 通过了面试,却不会和hr聊薪水?
  7. 洛谷P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold
  8. Backup Exec 在Windows平台下安装、设置及对Oracle数据库备份详细说明
  9. java查询mongodb数据_从mongodb中查询数据
  10. 使用微软官方工具MediaCreationTool制作Windows10的U盘安装盘
  11. 2021江西省数学建模三题
  12. Markdown中永久嵌入bs64图片,python PIL等比列强压缩后将图片转换为bs64,2M直接压成100k
  13. 《下终南山过斛斯山人宿置酒》 作者:李白
  14. python批量图片合并
  15. java多线程详解及线程池创建
  16. 【运筹学】对偶理论 : 互补松弛性 ( 原问题与对偶问题标准形式 | 互补松弛定理 | 互补松弛定理示例说明 )
  17. 在html中写响应式布局的代码,CSS实现响应式布局的方法
  18. Android入门篇(一)了解androidstudio开发软件
  19. Word编辑与排版一
  20. 3星|《混乱》:案例比较有趣,推导过程和结论略牵强

热门文章

  1. WebRTC中RTP协议详解
  2. CloseableReference: Finalized without closing
  3. jQuery getJSON两种参数传递
  4. 图像处理(C++ CImage class)学习笔记
  5. 二叉搜索树(BST)分析及实现
  6. HUAWEI AppGallery Connect全新升级,支持HarmonyOS生态全生命周期服务!
  7. 代码层面解决 The channelMax limit is reached. Try later.
  8. 国内7款API供应平台功能对比及详细介绍
  9. 【BLE】为什么找不到我的蓝牙设备
  10. WebRTC、Janus卡顿优化实践(SPS、PPS丢包)