精华内容
参与话题
问答
  • UDP 协议头部格式

    2020-09-29 14:49:04
    这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号...

    以下定义是在kernel4.14中

    1、结构

    struct udphdr {
    	__be16	source;
    	__be16	dest;
    	__be16	len;
    	__sum16	check;
    };
    

    2、含义

    source:16位源端口;这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写入该字段中。如果不写入端口号,则把这个字段设置为 0。这样,接收端的应用程序就不能发送响应了。

    dest:16位目的端口;

    len:16位UDP长度;header+data 总长度 。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8。

    check:16位UDP校验和;伪头部,头部,data 三部分校验和。

    展开全文
  • tcp头部格式如下图所示: 1.源端口号,16位,发送方端口号。 2.目标端口号,16位,发送方目标端口号。 3. 32为序列号,sequence number,保证网络传输数据顺序性。 4. 32位确认号,acknowledgment ...

    tcp头部格式如下图所示:

     

    1.源端口号,16位,发送方的端口号。

    2.目标端口号,16位,发送方的目标端口号。

    3.  32为序列号,sequence number,保证网络传输数据的顺序性。

    4.   32位确认号,acknowledgment number,用来确认确实有收到相关封包,内容表示期望收到下一个报文的序列号,用来解决丢包的问题。

    5.   头部大小,4位,偏移量:最大值为0x0F,即15,

    单位为32位(bit),单位也就是4个字节,给出头部占32bit的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60(15*4)字节的TCP头部。

    6.   Reserved  4位 ,预留字段,都为0

    7.  TCP标志位

    (1)CWR:Congestion window reduced,拥塞窗口减少。拥塞窗口减少标志被发送主机设置,用来表明它接收到了设置ECE标志的TCP包。拥塞窗口是被TCP维护的一个内部变量,用来管理发送窗口大小。

    (2)ECN-Echo:显式拥塞提醒回应。当一个IP包的ECN域被路由器设置为11时,接收端而非发送端被通知路径上发生了拥塞。ECN使用TCP头部来告知发送端网络正在经历拥塞,并且告知接收端发送段已经受到了接收端发来的拥塞通告,已经降低了发送速率。

        (3)URG:为1时,紧急指针(urgent pointer)有效,配合紧急指针使用

        (4)ACK:为1时,确认号有效

        (5)PSH:  为1时,接收方应该尽快将这个报文段交给应用层

         (6)RST:为1时,释放连接,重连。

         (7)SYN:为1时,发起一个连接。

         (8)FIN:为1时,关闭一个连接。

    8.  16位窗口大小:占16bit。此字段用来进行流量控制,主要用于解决流控拥塞的问题。单位为字节数,这个值是本机期望一次接收的字节数。

    9.  16位校验值:  占16bit。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。

    10.  16位紧急指针:占16bit。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

    11.  32位Tcp选项:一般包含在三次握手中。

     

     

     

    UDP头部结构

    头部结构中各部分的作用:
    (1)16位源端口号 记录源端口号,在需要对方回信时选用。不需要时可用全0。
    (2)16位目的端口号 记录目标端口号。这在终点交付报文时必须要使用到。
    (3)长度 UDP数据报的长度(包括数据和首部),其最小值为8B(即仅有首部没有数据的情况)。
    (4)校验和 检测UDP数据报在传输中是否有错,有错就丢弃。该字段时可选的,当源主机不想计算校验和,则直接令该字段为全0。当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给进程。如果接收方UDP发现收到的报文中目的端口号不正确(即不存在对应端口号的应用进程),就丢弃该报文,并由ICMP发送“端口不可达”差错报文交给发送方。

    转载于:https://www.cnblogs.com/lmh001/p/9928467.html

    展开全文
  • TCP协议与UDP协议区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是一个协议簇。里面...

    TCP协议与UDP协议的区别
    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!
    TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。
    TCP/IP协议集包括应用层,传输层,网络层,网络访问层。
    其中应用层包括:
    超文本传输协议(HTTP):万维网的基本协议.
    文件传输(TFTP简单文件传输协议):
    远程登录(Telnet),提供远程访问其它主机功能,它允许用户登录
    internet主机,并在这台主机上执行命令.
    网络管理(SNMP简单网络管理协议),该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等.
    域名系统(DNS),该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址.
    其次网络层包括:
    Internet协议(IP)
    Internet控制信息协议(ICMP)
    地址解析协议(ARP)
    反向地址解析协议(RARP)
    最后说网络访问层:网络访问层又称作主机到网络层(host-to-network).网络访问层的功能包括IP地址与物理地址硬件的映射,以及将IP封装成帧.基于不同硬件类型的网络接口,网络访问层定义了和物理介质的连接.
    当然我这里说得不够完善,TCP/IP协议本来就是一门学问,每一个分支都是一个很复杂的流程,但我相信每位学习软件开发的同学都有必要去仔细了解一番。
    下面我着重讲解一下TCP协议和UDP协议的区别。
    TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
    详细点说就是:(文章部分转载http://zhangjiangxing-gmail-com.iteye.com,主要是这个人讲解得很到位,的确很容易使人理解!)
    TCP三次握手过程
    1 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,
    主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我.
    2 主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:
    我已经收到你的请求了,你可以传输数据了;你要用哪佧序列号作为起始数据段来回应我
    3 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:”我已收到回复,我现在要开始传输实际数据了
    这样3次握手就完成了,主机A和主机B 就可以传输数据了.
    3次握手的特点
    没有应用层的数据
    SYN这个标志位只有在TCP建产连接时才会被置1
    握手完成后SYN标志位被置0

    TCP建立连接要进行3次握手,而断开连接要进行4次

    1 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
    2 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
    3 由B 端再提出反方向的关闭请求,将FIN置1
    4 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.
    由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端
    和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础
    名词解释
    ACK TCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段
    都收到了.比如,确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性.
    SYN 同步序列号,TCP建立连接时将这个位置1
    FIN 发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1
    TCP的包头结构:
    源端口 16位
    目标端口 16位
    序列号 32位
    回应序号 32位
    TCP头长度 4位
    reserved 6位
    控制代码 6位
    窗口大小 16位
    偏移量 16位
    校验和 16位
    选项 32位(可选)
    这样我们得出了TCP包头的最小长度,为20字节。

    UDP(User Data Protocol,用户数据报协议)
    (1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
    (2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
    (3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
    (4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
    (5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
    (6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
    我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。
    UDP的包头结构:
    源端口 16位
    目的端口 16位
    长度 16位
    校验和 16位

    小结TCP与UDP的区别:
    1.基于连接与无连接;
    2.对系统资源的要求(TCP较多,UDP少);
    3.UDP程序结构较简单;
    4.流模式与数据报模式 ;
    5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

    tcp和udp数据帧的格式

    MAC、IP头、TCP头、UDP头帧格式、详解
    转自:http://zoufengfu168.blog.163.com/blog/static/5461055200991333616451/

    一、MAC帧头定义

    typedef struct _MAC_FRAME_HEADER
    {
    char m_cDstMacAddress[6]; //目的mac地址
    char m_cSrcMacAddress[6]; //源mac地址
    short m_cType;      //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp
    }attribute((packed))MAC_FRAME_HEADER,*PMAC_FRAME_HEADER;

    typedef struct _MAC_FRAME_TAIL
    {
    unsigned int m_sCheckSum; //数据帧尾校验和
    }attribute((packed))MAC_FRAME_TAIL, *PMAC_FRAME_TAIL;

    二、IP头结构的定义

    typedef struct _IP_HEADER
    {
    char m_cVersionAndHeaderLen;   //版本信息(前4位),头长度(后4位)
    char m_cTypeOfService;       // 服务类型8位
    short m_sTotalLenOfPacket;     //数据包长度
    short m_sPacketID;         //数据包标识
    short m_sSliceinfo;         //分片使用
    char m_cTTL;           //存活时间
    char m_cTypeOfProtocol;       //协议类型
    short m_sCheckSum;        //校验和
    unsigned int m_uiSourIp;      //源ip
    unsigned int m_uiDestIp;      //目的ip
    } attribute((packed))IP_HEADER, *PIP_HEADER ;
    三、tcp头结构定义

    typedef struct _TCP_HEADER
    {
    short m_sSourPort;       // 源端口号16bit
    short m_sDestPort;        // 目的端口号16bit
    unsigned int m_uiSequNum;   // 序列号32bit
    unsigned int m_uiAcknowledgeNum; // 确认号32bit
    short m_sHeaderLenAndFlag;   // 前4位:TCP头长度;中6位:保留;后6位:标志位
    short m_sWindowSize;      // 窗口大小16bit
    short m_sCheckSum;       // 检验和16bit
    short m_surgentPointer;      // 紧急数据偏移量16bit
    }attribute((packed))TCP_HEADER, *PTCP_HEADER;

    typedef struct _TCP_OPTIONS
    {
    char m_ckind;
    char m_cLength;
    char m_cContext[32];
    }attribute((packed))TCP_OPTIONS, *PTCP_OPTIONS;

    四、UDP头结构的定义

    typedef struct _UDP_HEADER
    {
    unsigned short m_usSourPort;    // 源端口号16bit
    unsigned short m_usDestPort;    // 目的端口号16bit
    unsigned short m_usLength;     // 数据包长度16bit
    unsigned short m_usCheckSum;   // 校验和16bit
    }attribute((packed))UDP_HEADER, *PUDP_HEADER;

    ====

    http://www.cnblogs.com/li-hao/archive/2011/12/07/2279912.html

    tcp、ip、udp头部格式
    2.2 TCP/IP报文格式
      
      1、IP报文格式
      
      IP协议是TCP/IP协议族中最为核心的协议。它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。在局域网环境,IP协议往往被封装在以太网帧(见本章1.3节)中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。如图2-3所示:
        
       图2-3  TCP/IP报文封装
      
      图2-4是IP头部(报头)格式:(RFC 791)。
        
       图2-4  IP头部格式
      
      其中:
      
      ●版本(Version)字段:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。
      
      ●报头长度(Internet Header Length,IHL)字段:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。
      
      ●服务类型(Type of Service ,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。
      
      ●总长度字段:占16比特。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。
      
      ●标志字段:占16比特。用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。
      
      ●标志位字段:占3比特。标志一份数据报是否要求分段。
      
      ●段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。
      
      ●生存期(TTL:Time to Live)字段:占8比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。
      
      ●协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。
      
      ●头部校验和字段:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。
      
      ●源IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。
      
      可选项字段:占32比特。用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。
      
      2、TCP数据段格式
      
      TCP是一种可靠的、面向连接的字节流服务。源主机在传送数据前需要先和目标主机建立连接。然后,在此连接上,被编号的数据段按序收发。同时,要求对每个数据段进行确认,保证了可靠性。如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段。
      
      如图2-5所示,是TCP头部结构(RFC 793、1323)。
        
       图2-5  TCP头部结构
      
      ●源、目标端口号字段:占16比特。TCP协议通过使用”端口”来标识源端和目标端的应用进程。端口号可以使用0到65535之间的任何数字。在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。在服务器端,每种服务在”众所周知的端口”(Well-Know Port)为用户提供服务。
      
      ●顺序号字段:占32比特。用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
      
      ●确认号字段:占32比特。只有ACK标志为1时,确认号字段才有效。它包含目标端所期望收到源端的下一个数据字节。
      
      ●头部长度字段:占4比特。给出头部占32比特的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。
      
      ●标志位字段(U、A、P、R、S、F):占6比特。各比特的含义如下:
      
      ◆URG:紧急指针(urgent pointer)有效。
      
      ◆ACK:确认序号有效。
      
      ◆PSH:接收方应该尽快将这个报文段交给应用层。
      
      ◆RST:重建连接。
      
      ◆SYN:发起一个连接。
      
      ◆FIN:释放一个连接。
      
      ●窗口大小字段:占16比特。此字段用来进行流量控制。单位为字节数,这个值是本机期望一次接收的字节数。
      
      ●TCP校验和字段:占16比特。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。
      
      ●紧急指针字段:占16比特。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
      
      ●选项字段:占32比特。可能包括”窗口扩大因子”、”时间戳”等选项。
      
      3、UDP数据段格式
      
      UDP是一种不可靠的、无连接的数据报服务。源主机在传送数据前不需要和目标主机建立连接。数据被冠以源、目标端口号等UDP报头字段后直接发往目的主机。这时,每个数据段的可靠性依靠上层协议来保证。在传送数据较少、较小的情况下,UDP比TCP更加高效。
      
      如图2-6所示,是UDP头部结构(RFC 793、1323):
        
       图2-6  UDP数据段格式
      
      ●源、目标端口号字段:占16比特。作用与TCP数据段中的端口号字段相同,用来标识源端和目标端的应用进程。
      
      ●长度字段:占16比特。标明UDP头部和UDP数据的总长度字节。
      
      ●校验和字段:占16比特。用来对UDP头部和UDP数据进行校验。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。
      
      2.3 套接字
      
      在每个TCP、UDP数据段中都包含源端口和目标端口字段。有时,我们把一个IP地址和一个端口号合称为一个套接字(Socket),而一个套接字对(Socket pair)可以唯一地确定互连网络中每个TCP连接的双方(客户IP地址、客户端口号、服务器IP地址、服务器端口号)。
      
      如图2-7所示,是常见的一些协议和它们对应的服务端口号。
        
       图2-7  常见协议和对应的端口号
      
      需要注意的是,不同的应用层协议可能基于不同的传输层协议,如FTP、TELNET、SMTP协议基于可靠的TCP协议。TFTP、SNMP、RIP基于不可靠的UDP协议。
      
      同时,有些应用层协议占用了两个不同的端口号,如FTP的20、21端口,SNMP的161、162端口。这些应用层协议在不同的端口提供不同的功能。如FTP的21端口用来侦听用户的连接请求,而20端口用来传送用户的文件数据。再如,SNMP的161端口用于SNMP管理进程获取SNMP代理的数据,而162端口用于SNMP代理主动向SNMP管理进程发送数据。
      
      还有一些协议使用了传输层的不同协议提供的服务。如DNS协议同时使用了TCP 53端口和UDP 53端口。DNS协议在UDP的53端口提供域名解析服务,在TCP的53端口提供DNS区域文件传输服务。
      
      2.4 TCP连接建立、释放时的握手过程
      
      1、TCP建立连接的三次握手过程
      
      TCP会话通过三次握手来初始化。三次握手的目标是使数据段的发送和接收同步。同时也向其他主机表明其一次可接收的数据量(窗口大小),并建立逻辑连接。这三次握手的过程可以简述如下:
      
      ●源主机发送一个同步标志位(SYN)置1的TCP数据段。此段中同时标明初始序号(Initial Sequence Number,ISN)。ISN是一个随时间变化的随机值。
      
      ●目标主机发回确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外,此段中还包含目标主机的段初始序号。
      
      ●源主机再回送一个数据段,同样带有递增的发送序号和确认序号。
      
      至此为止,TCP会话的三次握手完成。接下来,源主机和目标主机可以互相收发数据。整个过程可用图2-8表示。
        
       图2-8  TCP建立连接的三次握手过程
      
      2、TCP释放连接的四次握手过程
      
      TCP连接的释放需要进行四次握手,步骤是:
      
      ●源主机发送一个释放连接标志位(FIN)为1的数据段发出结束会话请求

    展开全文
  • TCP和UDP报文头格式

    万次阅读 2018-06-03 23:47:25
    一、TCP 1.源端口和目的端口:各占2个字节...首部中序号字段值指是本报文段所发送数据第一个字节序号。 3.确认号:4个字节,是期望收到对方下一个报文段第一个数据字节序号。 若确认号=N,则表...

    一、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个字节,分别是个占用两个字节的源端口、目的端口、长度和检验和。

    展开全文
  • 1.用户数据报协议(User Datagram Protocol)简称UDP协议,它是在IP数据报服务上增加了端口和简单差错检测来实现进程到进程之间数据传输。 2.UDP协议有如下几个特点: a.无连接。UDP是无连接协议,数据传输...
  • TCP,UDP协议头格式

    2018-08-04 09:58:11
    TCP数据段首部格式: 源端口号(16) 目的端口号(16) 序列号(32) 确认应答号(32) 数据偏移(4) 保留(6) 代码位(6) 窗口(16) ...
  • TCP头部格式   字段名称 长度(比特) 含义 TCP头部(20字节~) 发送方端口号 16 发送网络包程序端口号 接收方端口号 16 网络包接收方程序...
  • 以太网,IP, TCP, UDP头部格式

    万次阅读 2017-04-26 11:29:28
    1.以太网帧的格式 以太网封装格式 2.IP报头格式  IP是TCP/IP协议簇中最为重要的协议。所有的TCP,UDP, ICMP和IGMP数据都以IP数据报格式传输。IP提供的是不可靠、无连接的协议。  普通的IP首部长为20个字节,除非...
  • 一、TCP1.源端口和目的端口:各占2个字节。...首部中序号字段值指是本报文段所发送数据第一个字节序号。 3.确认号:4个字节,是期望收到对方下一个报文段第一个数据字节序号。若确认号=N,则表明:...
  • UDP数据段格式

    千次阅读 2007-08-01 13:31:00
    UDP是一种不可靠、无连接数据报服务。源主机在传送数据前不需要和目标主机建立连接。... 如图2-6所示,是UDP头部结构(RFC 793、1323): 图2-6 UDP数据段格式 ●源、目标端口号字段:占16比
  • 目录 TCP,UDP,IP包头格式及说明1. 一、MAC帧定义1.1. 二、IP结构定义1.2. TCP/IP报文格式1.3. IP定义,共20个字2. 三、tcp结构定义2.1. TCP数据段格式 2.2. TCP定义,共20个字节.2.3. TCP...
  • 2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构原理。 简单聊天软件CS模式 2个目标文件 一个简单CS模式...
  • copy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt内容藏身到1st.jpg中生成3st.jpg新文件,注:2st.txt文件要空三排,参数:/b指二进制文件,/a指ASCLL格式文件 copy ipadmin$svv.exe c: 或:copyipadmin$*.* 复制...
  • 首部长度一般为20-60字节(Byte),其中后40字节是可选,长度不固定,前20字节格式为固定。数据负载部分长度一般可变,整个IP数据包最大长度为65535B。1、版本号(Version)长度为4位(bit),IP v4值为0100...
  • IP头、TCP头、UDP头

    2017-03-05 12:52:38
    IP数据包也叫IP报文分组,...下图为IP分组的报文头格式,报文头的前20个字节是固定的,后面的可变。   版本:占4位(bit),指IP协议的版本号。目前的主要版本为IPV4,即第4版本号,也有一些教育网和科研机构在使
  • UDP首部格式 在网络通信中,传输层将应用层数据拿到然后,添加传输层头部,再给网络层,那么传输层是为了保证两台主机之间通信,就在头部中要添加必要信息,我们就来分析一下UDP的头部信息。 首先我们通过...
  • UDP 首部格式

    千次阅读 2019-08-27 18:37:04
    源端口: 表示发送端端口,字段长度16位。...该字段保存了UDP首部长度跟数据长度之和。单位为字节(8位字节),实际最大长度不可能超过65507字节 2^16(635535) - 8字节UDP报头 − 20字节IP头部 校验和: 校...
  • TCP数据段格式+UDP数据段格式详解

    万次阅读 2015-07-25 16:59:03
    要想对TCP有着较为详细了解话,那TCP格式是一定要了解,有了结构清楚认识才能真正理解它工作过程和各种机制原理,以下就是TCP结构图: TCP数据包可分为TCP包头和来自应用层数据两部分 TCP段...
  • IP头、TCP头、UDP头详解以及定义

    千次阅读 2011-03-30 09:59:00
    下图为IP分组的报文头格式,报文头的前20个字节是固定的,后面的可变。 版本:占4位(bit),指IP协议的版本号。目前的主要版本为IPV4,即第4版本号,也有一些教育网和科研机构在使用IPV6。在进行通信时,通信双方...
  • IP数据包也叫IP报文分组,...下图为IP分组的报文头格式,报文头的前20个字节是固定的,后面的可变。   版本:占4位(bit),指IP协议的版本号。目前的主要版本为IPV4,即第4版本号,也有一些教育网和科研机构在使

空空如也

1 2 3 4 5 ... 20
收藏数 434
精华内容 173
关键字:

udp头的格式