首页 > 其他分享 >TCP和UDP的报文格式

TCP和UDP的报文格式

时间:2024-10-21 09:20:53浏览次数:1  
标签:UDP 16 报文格式 TCP 传输 数据

TCP和UDP的报文格式

 

  概要

  了解TCP和UDP的报文格式对于网络通信、系统设计、故障排查和安全性等多个方面都非常重要。

  一、TCP 报文格式(Transmission Control Protocol)

  TCP是面向连接、可靠的传输协议,其报文格式较复杂。TCP报文的格式如下:

    上图简化如下:

|  源端口(16位)  |  目的端口(16位)  |
|   序号(32位)   |
| 确认序号(32位) |
|  数据偏移(4位) | 保留(6位) | 标志位(6位) | 窗口大小(16位) |
| 校验和(16位)   |  紧急指针(16位)  |
|   选项(可选)   |
|   数据(可选)   |

   主要字段解释:

   1)源端口和目的端口:分别表示发送方和接收方的端口号,用于区分应用。

   2)序号:标识发送的数据字节流中的某个字节,用来保证数据按序接收。

   3)确认序号:接收方期望下次收到的数据序号,表示已成功接收到的数据。

   4)数据偏移:指出TCP头部的长度。

   5)标志位:有6个常用标志,用于控制和管理TCP连接的状态和数据传输过程。

  • 同步位SYN:SYN=1时,用于同步序列号,表示建立连接的请求。
  • 确认位ACK:ACK=1时,表示确认接收到数据包,确认报文中的序列号。
  • 终止位FIN:FIN=1时,用于关闭TCP连接,表示发送方不再发送数据。
  • 复位RST:RST=1时,用于强制重置连接,立即终止连接。
  • 推送位PSH:PSH=1时,提示接收方应该尽快将数据提交给应用层,而不要等到缓冲区填满后才传输。
  • 紧急位URG:URG=1时,提示优先处理紧急数据。与URG标志配合使用的还有一个紧急指针(Urgent Pointer),它指出紧急数据在数据段中的位置。

   这些标志位协同工作,确保TCP连接的建立、维护和关闭,以及可靠的数据传输和控制。

   6)窗口大小:用于流量控制,表示接收方能够接收的数据量。

   7)校验和:用于检验传输过程中是否发生数据错误。

   8)紧急指针:指向紧急数据的位置。

   9)选项:可选字段,常用于窗口缩放等高级功能。

   10)数据:实际传输的数据部分。

  二、UDP 报文格式(User Datagram Protocol)

  UDP是无连接、不可靠的传输协议,其报文格式相对简单。UDP报文的格式如下:

    上图简化如下:

|  源端口(16位)  |  目的端口(16位)  |
|   长度(16位)   |   校验和(16位)   |
|   数据(可选)   |

   主要字段解释:

   1)源端口和目的端口:分别表示发送方和接收方的端口号。

   2)长度:表示UDP头部和数据的总长度(最小值为8字节)。

   3)校验和:用于检验UDP头部和数据是否在传输过程中出现错误(可选字段)。

   4)数据:实际传输的数据部分。

   其中,UDP校验如下图:

    三、TCP报文和UDP报文的区别

   主要区别:

   TCP:面向连接,可靠传输,具有序号、确认机制等复杂功能,适用于需要可靠传输的场景(如文件传输、网页浏览等)。

   UDP:无连接,不可靠传输,报文格式简单,适用于对时效性要求高且容忍部分数据丢失的场景(如视频流、语音传输等)。

 

   

   参考链接:https://www.cnblogs.com/Chary/p/15954166.html

标签:UDP,16,报文格式,TCP,传输,数据
From: https://www.cnblogs.com/hld123/p/18488343

相关文章

  • 详解UDP-TCP网络编程
    目录UDP数据报套接字编程API代码示例--(回显)单个客户端UdpEchoServerUdpEchoClientUdpDictServer(词典)将服务端程序部署到云服务器上TCP流套接字编程API长短链接代码示例--(回显)多个客户端TcpEchoServerTcpEchoClientUDP数据报套接字编程APIDatagramSoc......
  • UDP协议和TCP协议
    UDP协议:        是一种无连接的、简单的传输层通信协议,它在IP协议(网络层)之上提供服务。特点:无连接:在数据传输前,发送方和接收方之间不需要建立连接,可以直接发送数据。简单:UDP协议头只有8个字节,比TCP协议头简单,因此开销较小。不保证可靠性:UDP不提供数据传输的可......
  • Linux C语言TCP协议实战
    文章目录1.TCP简介2.搭建框图3.相关函数介绍3.1socket函数3.2bind函数3.3listen函数3.4accept函数3.5connect函数3.6send函数3.7recv函数3.8其他函数4.实战4.1一对一模型4.1.1server.c4.1.2client.c4.1.3终端结果4.2多进程模型4.2.1server.c4.2.2cl......
  • 【超详细】TCP协议
    TCP(TransmissionControlProtocol传输控制协议)传输层协议有连接可靠传输面向字节流为什么TCP是传输控制协议呢?我们以前所看到的write接口,都是把用户级缓冲区的数据拷贝到发送缓冲区中,然后数据就由TCP自主决定了,所以TCP是传输控制协议,控制了数据的传输那么TCP是如何控......
  • Get “https://registry-1.docker.io/v2/“: proxyconnect tcp: dial tcp: lookup pro
    docker通过代理配置上网无法pullanbox使用代理配置文件解决1.创建代理配置文件运行以下命令创建配置文件:sudomkdir-p/etc/systemd/system/docker.service.dsudotouch/etc/systemd/system/docker.service.d/http-proxy.conf2.编辑配置文件使用nano文本编辑器打......
  • udp协议进行传输
    一、单个用户的连接1.发送端importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;/*1:建立udp的socket服务2:将要发送的数据封装成数据包3:通过udp的socket服务,将数据包发送出4:关闭资源*/publicclassS......
  • tcp协议进行传输
    一、单个用户进行连接1.客户端importjava.io.InputStream;importjava.io.OutputStream;importjava.net.Socket;importjava.util.Scanner;/*1:建立客户端的Socket服务,并明确要连接的服务器。2:如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该......
  • TCP-UDP-Socket调试工具以及使用教程(亲测好用!)
    前言TCP-UDP老程序都不陌生吧,面试常问。所以在网络编程与网络应用开发的过程中,调试是一个至关重要的环节,它帮助开发者确保数据能够准确无误地在不同节点之间传输。尤其当涉及到TCP/IP、UDP等底层网络通信协议时,面对复杂的连接建立、数据流控制及错误处理等问题,拥有一款强大且专业......
  • 一文说清楚http、tcp、socket、websocket区别
    写在开头阅读本文,需要您对tcp/ip协议簇协议有一定的了解,本文旨在带你了解Socket到底是啥,他与tcp/ip协议簇、WebSocket、Http等协议之间的关系OSI网络七层模型第一层:应用层,定义了用于在网络中进行通信和传输数据的接口;(Http协议位于该层)第二层:表示层,定义不同系统中数......
  • 安防综合管理系统EasyCVR视频汇聚平台Linux环境,如何测试UDP端口是否开启?
    视频汇聚EasyCVR安防监控视频系统采用先进的网络传输技术,支持高清视频的接入和传输,能够满足大规模、高并发的远程监控需求。平台灵活性强,支持国标GB/T28181协议、部标JT808、GA/T1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石......