精华内容
参与话题
问答
  • IP TCP UDP 结构

    2019-07-30 03:55:17
    IP Header Format: RFC 791 The IP header structure is as follows: 4 8 ...
    IP Header Format  :  RFC 791 

    The IP header structure is as follows:

    4
    8
    16
    32 bits
    Ver.
    IHL
    Type of service
    Total length
    Identification
    Flags
    Fragment offset
    Time to live
    Protocol
    Header checksum
    Source address
    Destination address
    Option + Padding
    Data
    IP header structure


    IPV6 :

    The IPv6 header structure is as follows:

    4
    4
    16
    24
    32 bits
    Ver.
    Priority
    Flow label
    Payload length
    Next header
    Hop limit

    Source address
    (128 Bits)

    Destination address
    (128 bits)
    IPv6 header structure


             

    TCP Header Format  :    RFC 793   

    The TCP header structure is as follows:

    16
    32 bits
    Source port
    Destination port
    Sequence number
    Acknowledgement number
    Offset
    Resrvd
    U
    A
    P
    R
    S
    F
    Window
    Checksum
    Urgent pointer
    Option + Padding
    Data
    TCP header structure
      


     

    The UDP header structure is shown as follows:

    16
    32 bits
    Source port
    Destination port
    Length
    Checksum

    Data
    UDP header structure

    转载于:https://www.cnblogs.com/davidlili/archive/2006/08/29/489918.html

    展开全文
  • 熟悉TCP的三次握手协议 三次握手 TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后进行数据通信,最后拆除连接三个过程。TCP在建立连接时又分三步走: 第一步(A->B):主机A向主机...

    熟悉TCP的三次握手协议

    三次握手

    TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后进行数据通信,最后拆除连接三个过程。TCP在建立连接时又分三步走:

    第一步(A->B):主机A向主机B发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号;

    第二步(B->A):主机B在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示主机B的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement)。

    第三步(A->B):主机A也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。


    分析TCP/UDP数据包结构

    TCP

    TCP数据包头格式:


    UDP

    UDP即用户数据报协议,是一种面向无连接的不可靠传输协议,不需要通过3次握手来建立一个连接,同时,一个UDP应用可同时作为应用的客户或服务器方。

    由于UDP协议并不需要建立一个明确的连接,因此建立UDP应用要比建立TCP应用简单得多。UDP比TCP协议更为高效,也能更好地解决实时性的问题,如今,包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都使用UDP协议。

    UDP数据包头


    TCP/IP核心协议

    协议选择

    协议的选择应该考虑到数据可靠性、应用的实时性和网络的可靠性。

    对数据可靠性要求高的应用需选择TCP协议,而对数据的可靠性要求不那么高的应用可选择UDP传送。

    TCP协议中的3次握手、重传确认等手段可以保证数据传输的可靠性,但使用TCP协议会有较大的时延,因此不适合对实时性要求较高的应用;而UDP协议则有很好的实时性。

    网络状况不是很好的情况下需选用TCP协议(如在广域网等情况),网络状况很好的情况下选择UDP协议可以减少网络负荷。

     

    展开全文
  • TCP: 伪头==12:仅参与校验和,成员totallen不包括伪头部. sourceip(32) destip(32) res(8) protocol(8) totallen(16) 报头>=20bytes. sourcePort(16) DestPort(16) seq(32) ack_seq(32) hdrlen(4) res(6) urg/...

    TCP:
    伪头==12:仅参与校验和,成员totallen不包括伪头部.
    sourceip(32)
    destip(32)
    res(8) protocol(8) totallen(16)
    报头>=20bytes.
    sourcePort(16) DestPort(16)
    seq(32)
    ack_seq(32)
    hdrlen(4) res(6) urg/ack/psh/rst/syn/fin win(16)
    checksum(16) urgpoint(16)
    options(0~40bytes即0~320bit)
    选项最大长度:tcp首部长度hdrlen范围是2^4-1=15个32bit.即60bytes,减去固定长度20bytes,得选项最多40bypes.
    选项部分必须为8bit整数倍,这样才符合RFC文档要求.
    选项:kindle(8) length(8) info(16).
    TCP选项:
    MSS(maximum segment size)最大报文传输段(数据报不分片的最大值):32bit数据部分字段(不包括TCP头).
    应用层往TCP层写数据时,若TCP发送缓冲区满,但还没write完,内核便将write系统调用挂起;TCP发送缓冲区满或网络空闲时,缓冲区数据便被通过ip层发送到链路层发送队列中;发送缓冲区数据成功发送(包括重传等情况)后,才唤醒write.而ip分片会导致TCP重传可能性增大,此时ip层再分片,将可能导致write一直挂起,性能下降.
    MSS=MTU-TCP头部大小-IP头部大小=data. 
    ip层的MTU(maximum transfer unit) = ipHeader+tcpHeader+data;

    SACK(selective acknowledgements)选择确认选项.34bytes
    目的是为了不重传已经正确到达的数据.eg:A发送1,2,3,4,5数据,B接收到1,3,5,而2,4丢失.不启动SACK,A从2开始重传;启动SACK,A只重传2,4.
    tcp首部options最多40bytes,而指明一个序列号边界需4bytes,一个报文需要2个边界:如2丢失,需要1,3序列号指明.故需要8bytes.因此最多指明4个丢失报文.(因为还需要2个功能字节,故40/8-1=4).这个选项大小是34bytes.

    时间戳选项(timestamps).10bytes.
    1,用来计算往返时间RTT.发送方在放松报文前放入当前时间,接收方只需在应答时复制该时间戳即可,以便发送方计算RTT.
    2,PAWS防止回绕的序号:众所周知,32bit序列号在数据超过2^32便会重复.在高速网络(如1Gb/s),则几秒便会重复,从而可能带来传输的混乱.启用时间戳选项后,可以很容易的分辨出相同序列号的数据报先后顺序.
    NOP(no operation):2bytes
    这个字段实际上没有任何意义,它用于提供填充垫片.TCP头部必须是4bytes的倍数,但options则通常不满足.如果不满足,则需要使用NOP进行填充使之符合tcp的头部构造规定.
    NOP也用作分割选项.如我们使用了窗口扩大选项和SACK,那么必须使用NOP进行隔离.
    窗口扩大选项(window scaling):TCP最大窗口64Kb,对于时延和带宽都大的通信不能满足性能和高吞吐量,于是窗口扩大选项产生.
    窗口扩大选项占3bytes,第一个byte表示移位值S.表示win左移S bit.在tcp握手时协商从而扩大,后续如果改为0,则回复win的16bit大小.S最大值是14,因此win最大是65535*2^14=1GB.


    拥塞窗口cwnd(congestion window):发送方维持一个动态变化的拥塞窗口,大小取决于网络拥塞程度.
    发送方的发送窗口<=拥塞窗口.一般两个窗口相等.
    网络好,从而拥塞窗口较大时,由于接收方接收能力有限,从而发送窗口达到一定值不再发生变化.
    网络拥塞:发送方发送一些报文段,没有在一定时间内接收到确认报文,可认为网络拥塞.

    慢启动算法:为了防止网络拥塞,cwnd=1,发送报文后收到确认报文,则cwnd*=2;
    拥塞避免:慢启动算法还是增加过快,容易导致网络拥塞.因此加了个状态变量:慢开始门限ssthresh
    当cwnd < ssthresh时,使用慢启动算法
    当cwnd > ssthresh时,使用拥塞避免算法.

    拥塞避免算法:每次往返 cwnd+1,而不再翻倍.cwnd此时增长比慢启动慢的多.
    拥塞避免算法之一:AIMD算法:和式增加,积式减少.
    积式减少:网络一旦出现超时:ssthresh=cwnd/2,cwnd=1,执行慢启动算法.(cwnd<ssthresh)
    和式增加:cwnd++.(前提:cwnd>ssthresh)

    快重传算法:
    发送方发送1,2,3,4,5,6,7,8,9,10,...连续收到3个确认4后,不必再等待超时,直接从5开始重发.
    5丢失...
    接收方接收到1,2,3,4,6(确认4),7(确认4),8(确认4),9(确认4)...

    快恢复算法:
    发送方连续收到3个确认后,执行积式减少:ssthresh=cwnd/2,此时cwnd/=2,开始执行拥塞避免算法,拥塞窗口cwnd缓慢增大.


    UDP头部:
    源端口(16) 目的端口(16)
    长度(16)   检验和(16)
    data
    注:检验和全0表示不使用检验和.

    UDP是否和TCP一样分片?UDP不需要保证可靠,因此没有发送缓冲区,在应用层调用write时,数据直接传输到ip层.由于ip层也没有缓冲区,数据直接写到链路层的输出队列中.如果UDP数据报大于链路层MTU,ip层就会分片,再发送到链路层输出队列.


    公认的服务端口:
    ftp    21
    telnet 23
    smtp   25
    gopher 70
    http   80

    展开全文
  • 如何在服务器端从UDP结构中获取客户端的MAC信息?麻烦给段代码
  • TCP和UDP数据包结构

    千次阅读 2016-05-20 20:24:10
    TCP (Transport Control Protocol)传输控制协议: 1、TCP数据包的分组格式: A,源端口:标识源端应用进程。 B, 目的端口:标识目的端应用进程。 C, 序号:在SYN标志未置位时,该字段指示了用户数据区中第一...

    TCP (Transport Control Protocol)传输控制协议:

    1、TCP数据包的分组格式:

    A,源端口:标识源端应用进程。

    B, 目的端口:标识目的端应用进程。

    C, 序号:在SYN标志未置位时,该字段指示了用户数据区中第一个字节的序号;在SYN标志置位时,该字段指示的是初始发送的序列号。

    D,确认号:用来确认本端TCP实体已经接收到的数据,其值表示期待对端发送的下一个字节的序号,实际上告诉对方,在这个序号减1以前的字节已正确接收。

    E, 数据偏移:表示以32位字为单位的TCP分组头的总长度,用于确定用户数据区的起始位置。

    F, URG:紧急指针字段有效。

    G,ACK:确认好有效。

    H,PSH:Push操作。TCP分组长度不定,为提高传输速率,往往要收集到足够的数据后才发送。这种方式不适合实时性要求很高的应用,因此,TCP提供“Push”操作,以强迫传输当前的数据,不必等待缓冲区满才传输。

    I,   RST:连接复位,重新连接。

    J,  SYN:同步序号,该比特置位表示连接建立分组。

    K,FIN:字符串发送完毕,没有其它数据需要发送,该比特置位表示连接确认分组。

    L, 窗口:单位是字节,指明该分组的发送端愿意接收的从确认字段中的值开始的字节数量。

    M,    校验和:对TCP分组的头部和数据进行校验。

    N,紧急指针:指出窗口中紧急数据的位置(从分组序号开始的正向位移,指向紧急数据的最后一个字节),这些紧急数据应优先于其它的数据进行传输。

    O,任选项:用于处理一些特殊情况。目前被正式使用的选项字段可用于定义通信过程中的最大分组长度,只能在连接建立时使用。

    P, 填充:用于保证任选项为32bit的整数倍。

     

     

     2、TCP三次握手、四次断开的机制:

       三次握手:

    第一次握手:客户端发送一个SYN(包含有同步序列号的标志位的数据段和通信请求)给服务器,然后等待服务器的回发确认信息

    第二次握手:服务器发送一个SYN-ACK给客户端,确认已经收到客户端发来的信息

    第三次握手:客户端接收到服务器发来的确认信息后,再回馈一个ACK给服务器,此时就可与服务器建立可靠的连接

     

    ACK:TCP数据包首部中的确认标志,对已接收到的TCP报文进行确认。

    SYN:SYN是TCP/IP建立连接时使用的握手信号。

     

       四次断开:

    因为TCP/IP的连接是全双工的,所以每个方向都要单独进行关闭。

    每当TCP单方向上的数据传输过后,都会再送一个FIN过去,告诉对方我这方向上的数据将要关闭了,请你做好准备哦。当对方接到FIN后就会通知应用层TCP连接已经终止了这一方向上的数据的传输。发送FIN通常是应用层进行关闭的结果。

     

    第一次:客户端向服务器发送数据后,将FIN置1,告诉它我将要关闭这一方向上的数据连接。

    第二次:服务器接受到FIN后,关闭该方向上的数据的连接。将ACK置1,告诉客户端我已经接收到你的信息并以处理。

    第三次:向客户端申请反方向上的数据连接的断开。将FIN置1。

    第四次:客户端接到服务器发来的申请,将ACK置1,双方同时关闭连接。

     

    UDP(User Datagram Protocol)用户数据报协议:

    UDP首部字段由4个部分组成,其中两个是可选的。各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能。



    3、与TCP包的不同之处:

       无需三次握手四次断开,传输速度相对于TCP极快,不确定性,甚至可以不需要应答,没有TCP数据包的安全性,有丢包现象。


     
    UDP数据包格式




    UDP数据报格式有首部和数据两个部分。首部很简单,共8字节。包括:
         ◆源端口(Source Port):2字节,源端口号。
         ◆目的端口(Destination Port ):2字节,目的端口号。
         ◆长度(Length):2字节,UDP用户数据报的总长度,以字节为单位。
         ◆检验和(Checksum):2字节,用于校验UDP数据报的数字段和包含UDP数据报首部的“伪首部”。其校验方法同IP分组首部中的首部校验和。
        伪首部,又称为伪包头(Pseudo Header):是指在TCP的分段或UDP的数据报格式中,在数据报首部前面增加源IP地址、目的IP地址、IP分组的协议字段、TCP或UDP数据报的总长度等共12字节,所构成的扩展首部结构。此伪首部是一个临时的结构,它既不向上也不向下传递,仅仅只是为了保证可以校验套接字的正确性


    转自:http://www.360doc.com/content/11/1201/09/7503466_168805370.shtml

    展开全文
  • TCP与UDP数据包结构

    千次阅读 2013-04-21 23:03:45
    TCP (Transport Control Protocol)传输控制协议: 1、TCP数据包的分组格式: A,源端口:标识源端应用进程。 B, 目的端口:标识目的端应用进程。...C, 序号:在SYN标志未置位时,该字段指示了用户数据区中第一个...
  • UDP结构

    2014-09-23 17:30:00
    UDP结构  // 参考: http://www.2cto.com/net/201307/224715.html UDP数据包由首部和数据组成,每行4个字节(32位),首部固定长度为8个字节(2行)   2、首部 1、 第一行:源端口16位,目的端口16位 ...
  • UDP头部结构UDP校验和计算

    千次阅读 2018-12-16 23:32:44
    Udp:用户数据报协议 特点: 1.无连接,传输数据时不需要建立链接 2.尽最大努力传输,不可靠 3.面向报文的,接收到应用程序的数据时,只往数据前面加一个UDP头部就传给网络层,收到网络层传来的UDP数据时,只把UDP头部去掉...
  • TCP报文结构
  • UDP协议的特点及UDP头部结构

    万次阅读 2018-05-17 22:32:27
  • 分析UDP数据包结构

    千次阅读 2015-01-22 13:25:14
    一个典型的udp数据报包含如下几个部分:以太网MAC首部+网络层IP数据报首部+传输层UDP首部+要传输的数据 1.以太网MAC头 以太网MAC头由14个字节构成,6个目的地址,6个源地址,2个类型字段,目的地址和源地址是指...
  • 详细剖析MinecraftPE的通讯原理 用于开发基于mcpe通讯的相关软件
  • 【以太网数据结构UDP协议

    千次阅读 2015-12-04 20:36:48
    【以太网数据结构】系列文章链接 http://blog.csdn.net/u012819339/article/category/5849175UDP协议数据包格式 UDP协议是一种基于IP协议的不可靠协议,它提供无连接的不可靠的传输服务。UDP协议的执行速度要比TCP...
  • UDP协议结构详细解析

    2015-03-31 11:59:22
    UDP协议结构详细解析 对于UDP协议的一些基本概念我们已经掌握不少了。这里我们针对UDP协议的结构进行一下详述。希望能够帮助大家解决这方面的疑点。那么对于UDPUDP:User Datagram Protocol)来说,用户数据报协议...
  • ip tcp udp包头结构

    2013-07-22 11:10:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • TCP/UDP数据结构

    2012-09-10 12:41:29
    struct tcp_hdr  {  u_int16_t source;   u_int16_t dest;   u_int32_t seq;   u_int32_t ack_
  • [网络基础知识]UDP数据报结构

    千次阅读 2013-05-17 17:10:04
    UDP数据与TCP数据基本一致,唯一的不同是UDP传给IP的信息单元称作UDP数据报(UDP datagram),而且UDP的首部长为8字节。UDP数据报格式有首部和数据两个部分。首部很简单,共8字节。包括: ◆源端口(Source Port)...
  • TCP和UDP报头结构

    2020-06-16 17:40:35
    TCP报头 源端口和目的端口:各占2个字节。 2.序号:占4字节。序号范围是0~2^32-1。TCP是面向字节流的,TCP连接中传送的字节流中的每个字节都按顺序编号。整个要传送的字节流的起始序号必须要在连接建立时设置。...
  • UDP接收结构的问题

    2014-03-10 16:09:03
    UDP收一个结构, 该结构中有bool类型(不是BOOL)的字段, 明明该字段发送的是true, 但收到的却是false, 并且其他字段内容都正确的. 初步怀疑是结构中的bool类型, 现改为unsigned char试试. 不知大家有无碰到...
  • UDP报文结构及检验和

    千次阅读 2019-03-12 18:18:37
    报文结构 源端口:源端口号。在需要对方回信时选用。不需要时可用全0。 目的端口:目的端口号。这在终点交付报文时必须要使用到。 长度: UDP用户数据报的长度,其最小值是8(仅有首部)。 校验和:检测UDP...
  • 1、图 UDP数据包由首部和数据组成, 每行4个字节(32位) 首部固定长度为8个字节(2行) ...2、 第二行:UDP包长度16位,UDP校验和16位 ... 包括UDP首部在内的以字节为单位的UDP数据报总长度; 校验和:
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    文件为doc版,可自行转成txt,在手机上看挺好的。 本资源来自网络,如有纰漏还请告知,如觉得还不错,请留言告知后来人,谢谢!!!!! ...入门学习Linux常用必会60个命令实例详解 ...Linux提供了大量的命令,利用它...
  • UDP结构和传输原理

    千次阅读 2017-10-12 00:52:01
    3.长度 UDP用户数据报的长度,其最小值是8 4.校验和 检测UDP用户数据报在传输中是否有错。有错就丢弃对于TCP/IP是分四层的,分别是应用层,传输层,网络层,网络接口层。 IP数据报由首部和数据两部分组成。首部的...

空空如也

1 2 3 4 5 ... 20
收藏数 4,461
精华内容 1,784
关键字:

udp 结构