精华内容
下载资源
问答
  • tcp协议字段
    万次阅读
    2017-01-15 16:55:11




    TCP首部字段有必选字段20字节,另外有40字节的可选字段


    必选字段如下:

    源端口(Source Port),目标端口(Destination Port) 各2字节

    源端口号,标识主机上发起传送的应用程序;目的端口标识主机上传送要到达的应用程序。源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上I P首部中的源端I P地址和目的端I P地址唯一确定一个TCP连接。一个I P地址和一个端口号有时也称为一个插口(socket),插口对(socket pair)(包含客户I P地址、客户端口号、服务器 I P地址和服务器端口号的四元组 )可唯一确定互联网络中每个TCP连接的双方。IP+TCP端口唯一确定一个TCP连接。
      TCP协议通过使用"端口"来标识源端和目标端的应用进程。 端口号可以使用0到65535之间的任何数字。在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。在服务器端,每种服务在"众所周知的端 口"(Well-Know Port)为用户提供服务。


    封包序号(Sequence Number) 4字节
    由于 TCP 封包必须要带入 IP 封包当中,所以如果 TCP 数据太大时(大于 IP 封包的容许程度), 就得要进行分段。这个 Sequence Number 就是记录每个封包的序号,可以让收受端重新将 TCP 的数据组合起来。
    序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

    确认号(Acknowledge Number) 4字节
    为了确认主机端确实有收到我们 client 端所送出的封包数据,我们 client 端当然希望能够收到主机方面的响应,那就是这个 Acknowledge Number 的用途了。 当 client 端收到这个确认码时,就能够确定之前传递的封包已经被正确的收下了。这个号是期望收到对方的下一个报文段的数据的第一个字节的序号。

    数据偏移(Data Offset)4比特
    和IP数据包头部一样,也有个Options字段,长度是不固定的,而为了要确认整个TCP封包大小,就需要这个标志来说明整个封包区段的起始位置。
    这个字段指出TCP报文段的数据起始处距离 TCP报文段的起始处有多远。“数据偏移”的单位不是字节而是32bit字(4字节为计算单位)。
    没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。

    保留字段(Reserved) 占6比特
    保留为今后使用,但目前应置为0。 

    状态控制码(Code,Control Flag)
    标志位字段(U、A、P、R、S、F):占6比特。各 比特的含义如下:
    • URG:紧急比特(urgent),当URG=1时,表明紧急指针字段有效,代表该封包为紧急封包。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据), 且上图中的 Urgent Pointer 字段也会被启用。
    • ACK:确认比特(Acknowledge)。只有当ACK=1时确认号字段才有效,代表这个封包为确认封包。当ACK=0时,确认号无效。
    • PSH:(Push function)若为1时,代表要求对方立即传送缓冲区内的其他对应封包,而无需等缓冲满了才送。
    • RST:复位比特(Reset) ,当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
    • SYN:同步比特(Synchronous),SYN置为1,就表示这是一个连接请求或连接接受报文,通常带有 SYN 标志的封包表示『主动』要连接到对方的意思。。
    • FIN:终止比特(Final),用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

    滑动窗口(Window) 占2字节
    窗口字段用来控制对方发送的数据量,可以告知对方目前本身有的缓冲器容量(Receive Buffer) 还可以接收封包。当 Window=0 时,代表缓冲器已经额满,所以应该要暂停传输数据。单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限,这个值是本机期望一次接收的字节数。

    TCP校验和(Checksum)  占2字节
    当数据要由发送端送出前,会进行一个检验的动作,并将该动作的检验值标注在这个字段上; 而接收者收到这个封包之后,会再次的对封包进行验证,并且比对原发送的 Checksum 值是否相符,如果相符就接受,若不符就会假设该封包已经损毁,进而要求对方重新发送此封包!在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。

    紧急指针(Urgent Pointer)  占2字节
    这个字段是在 Code 字段内的 URG = 1 时才会产生作用。可以告知紧急数据所在的位置(紧急指针指出在本报文段中的紧急数据的最后一个字节的序号)。

    选项(Options) 长度可变。
    TCP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。
    目前此字段仅应用于表示接收端可以接收的最大数据区段容量,若此字段不使用, 表示可以使用任意数据区段的大小。 这个字段较少使用。
    TCP首部的主要选项:
    最大报文段长度MSS(Maximum Segment Size)是TCP报文段中的数据字段的最大长度。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”

    填充字段(Padding)
    如同 IP 封包需要有固定的 32bits 表头一样, Options 由于字段为非固定, 所以也需要 Padding 字段来加以补齐才行。同样也是 32 bits 的整数。
    这是为了使整个首部长度是4字节的整数倍。

    备注:

    1、MSS(Max Segment Size) 是TCP数据包每次能够传输的最大数据分段,其中并不包括TCP首部。而且MSS只出现在syn报文段中。一般来说,MSS的值在不分段的情况会越大越好,比如一个外出接口的MSS值是MTU减去IP和TCP首部长度。
      2、窗口大小是个动态的值,因为TCP是用的滑动窗口协议,传输数据的速率都是根据窗口大小来调整的。可以把窗口理解为一个缓存,而且窗口大小跟MSS是没有任何关系的。
      3、窗口是为了控制传输过程中的速度。而MSS只是控制TCP报文段大小。

    Source port (16 bits)
    Identifies the sending port
    Destination port (16 bits)
    Identifies the receiving port
    Sequence number (32 bits)
    Has a dual role:
    • If the SYN flag is set (1), then this is the initial sequence number. The sequence number of the actual first data byte and the acknowledged number in the corresponding ACK are then this sequence number plus 1.
    • If the SYN flag is clear (0), then this is the accumulated sequence number of the first data byte of this segment for the current session.
    Acknowledgment number (32 bits)
    If the  ACK flag is set then the value of this field is the next sequence number that the sender is expecting. This acknowledges receipt of all prior bytes (if any). The first  ACK sent by each end acknowledges the other end's initial sequence number itself, but no data.
    Data offset (4 bits)
    Specifies the size of the TCP header in 32-bit  words. The minimum size header is 5 words and the maximum is 15 words thus giving the minimum size of 20 bytes and maximum of 60 bytes, allowing for up to 40 bytes of options in the header. This field gets its name from the fact that it is also the offset from the start of the TCP segment to the actual data.
    Reserved (3 bits)
    For future use and should be set to zero
    Flags (9 bits) (aka Control bits)
    Contains 9 1-bit flags
    • NS (1 bit) – ECN-nonce concealment protection .
    • CWR (1 bit) – Congestion Window Reduced (CWR) flag is set by the sending host to indicate that it received a TCP segment with the ECE flag set and had responded in congestion control mechanism .
    • ECE (1 bit) – ECN-Echo has a dual role, depending on the value of the SYN flag. It indicates:
    • If the SYN flag is set (1), that the TCP peer is ECN capable.
    • If the SYN flag is clear (0), that a packet with Congestion Experienced flag set (ECN=11) in IP header received during normal transmission. This serves as an indication of network congestion (or impending congestion) to the TCP sender.
    • URG (1 bit) – indicates that the Urgent pointer field is significant
    • ACK (1 bit) – indicates that the Acknowledgment field is significant. All packets after the initial SYN packet sent by the client should have this flag set.
    • PSH (1 bit) – Push function. Asks to push the buffered data to the receiving application.
    • RST (1 bit) – Reset the connection
    • SYN (1 bit) – Synchronize sequence numbers. Only the first packet sent from each end should have this flag set. Some other flags and fields change meaning based on this flag, and some are only valid for when it is set, and others when it is clear.
    • FIN (1 bit) – Last package from sender.
    Window size (16 bits)
    The size of the  receive window, which specifies the number of window size units (by default, bytes) (beyond the segment identified by the sequence number in the acknowledgment field) that the sender of this segment is currently willing to receive 
    Checksum (16 bits)
    The 16-bit  checksum field is used for error-checking of the header and data
    Urgent pointer (16 bits)
    if the  URG flag is set, then this 16-bit field is an offset from the sequence number indicating the last urgent data byte


    有关可选字段:

    摘自wiki:

    • 0 (8 bits) – End of options list
    • 1 (8 bits) – No operation (NOP, Padding) This may be used to align option fields on 32-bit boundaries for better performance.
    • 2,4,SS (32 bits) – Maximum segment size (see maximum segment size[SYN]
    • 3,3,S (24 bits) – Window scale (see window scaling for details[SYN][6]
    • 4,2 (16 bits) – Selective Acknowledgement permitted. [SYN] (See selective acknowledgments for details)[7]
    • 5,N,BBBB,EEEE,... (variable bits, N is either 10, 18, 26, or 34)- Selective ACKnowledgement (SACK)[8] These first two bytes are followed by a list of 1–4 blocks being selectively acknowledged, specified as 32-bit begin/end pointers.
    • 8,10,TTTT,EEEE (80 bits)- Timestamp and echo of previous timestamp (see TCP timestamps for details)[9]
    (The remaining options are historical, obsolete, experimental, not yet standardized, or unassigned)

    对应如下:

    1、TCP首部选项字段多达40B,记下一些常用的东西:

    2、选项结束字段(EOP,0x00),占1B,一个报文段仅用一次。放在末尾用于填充,用途是说明:首部已经没有更多的消息,应用数据在下一个32位字开始处

    3、无操作字段(NOP, 0x01),占1B,也用于填充,放在选项的开头



    4、MSS(最大报文段长度),格式如下:种类(1B,值为2),长度(1B,值为4),数值(2B)

    用于在连接开始时确定MSS的大小,如果没有确定,就用默认的(一般实现是536B)


    5、窗口扩大因子window scale,格式如下:种类(1B,值为3),长度(1B,值为3),数值(1B)

    新窗口值 = 首部窗口值 * 2的(扩大因子)次方(即窗口值大小要左移window scale 位)

    当通信双方认为首部的窗口值还不够大的时候,在连接开始时用这个来定义更大的窗口。仅在连接开始时有效。一经定义,通信过程中无法更改。

    6、允许SACK和SACK选项,略,以后补充

    可看这里http://blog.csdn.net/jxh_123/article/details/27361321

    http://blog.chinaunix.net/uid-13746440-id-3282565.html

    7、时间截(应用测试RTT和防止序号绕回)

    协议规定收端不需要响应每一个收到的数据报文,只需要收到N个报文后,向发端回复一个ack报文即可。
        这样的规定是为了提高通讯的效率,但是也引入了几个问题:
        A. 发端发出报文后,到底多久能够收到ack是不确定的。
        B. 万一ack报文丢失了,判断需要重发的timeout时间也很难确定。


    这样时间戳就能计算RTT和防止序号反转

    更多相关内容
  • TCP/IP协议字段理解

    千次阅读 2019-01-13 17:49:59
    TCP协议 源/目的端口号:表示数据从哪个进程来,到哪个进程去 序号/确认序号:TCP将每个字节的数据都进行了编号称为序列号,接收端收到数据之后要发送确认序号给发送端。 4位头部长度:表示TCP头部有多少个4...

    TCP协议

    在这里插入图片描述

    • 源/目的端口号:表示数据从哪个进程来,到哪个进程去

    • 序号:TCP将每个字节的数据都进行了编号称为序列号,接收端收到数据之后要发送确认序号给发送端。序号用于对字节流进行编址,例如序号是301,表示第一个字节的编号为301,携带的数据长度是100,下一个报文的编号就是401

    • 确认序号:期望收到的下一个报文段的序号,B收到A发来的一个报文段,序号是301,携带的数据长度是300,那么B发送给A的确认序号就是601

    • 4位头部长度:表示TCP头部有多少个4字节,所以TCP头部最大长度为15*4=60字节

    • 6个标志位

      URG:紧急指针是否有效
      ACK:确认号是否有效
      PSH:提示接收端应用程序立刻从缓冲区读走
      RST:要求对方重新建立连接,携带RST的标识的报文称为复位报文段
      SYN:请求建立连接,携带SYN标识的报文称为同步报文段
      FIN:结束标识,告诉对端本端关闭。

    • 16位窗口大小:无需等待确认应答而可以继续发送数据的最大值

    • 16位校验和:发送端填充,CRC校验,接收端校验不通过,认为数据有问题。校验和包含TCP首部和TCP数据部分。

    • 16位紧急指针:标识那部分数据是紧急数据

    TCP保证可靠传输的手段

    确认应答机制

    • 每个ACK包都带有对应的确认序列号,告诉发送端哪些数据已经接受到了,下一次应该发送哪些数据

    超时重传机制

    • 发送端给接收端发送数据,由于网络原因未能到达接收端,发送端在一个确定的时间内没有收到接收端的确认应答信息发送端就会重新进行发送。
    • 如果是发送端的数据接收到了,但是接收端的确认报文丢失,那么接收端就会有很多重复数据,那么TCP就可以根据序列号识别出重复的包,并把重复的丢弃掉。

    超时时间如何确定?
    TCP为了在任何环境下都有比较高性能的通信,会动态计算最大超时时间

    • Linux中以500ms为单位进行控制,每次判定超时时间都是500ms的整数倍
    • 重发一次之后没有应答,在等待2*500ms之后再进行重传
    • 还得不到应答,等待4*500ms进行重传,一次类推
    • 累计到一定的重传次数,TCP就会强制关闭连接

    滑动窗口

    使用确认应答机制,对于每次发送的数据都需要对方给一个应答,这样能保证可靠传输,但是在数据往返较长的时候性能就大大下降
    

    为了提高TCP的传输效率,可以一次性发送多条数据(将多个段的等待时间重叠在一起),这样就可以大大提高TCP的性能。

    在这里插入图片描述

    • 滑动窗口发送前四个段的时候,不需要等待ACK,直接发送
    • 收到第一个ACK后,滑动窗口向后移动,继续发送第五个段的数据
    • 操作系统维护滑动窗口需要开辟发送缓冲区,记录哪些数据没有应答,只有确认应答过得数据,才会从缓冲区删除
    • 滑动窗口越大,网络吞吐量越高

    网络中没有百分百可靠的协议,数据包丢了怎么办?
    数据包抵达,ACK丢失
    使用滑动窗口ACK丢了并不重要,因为还有后序的ACK进行确认。
    发送端的数据包直接丢了

    • 如果上图中101-200的数据包丢失,那么接收端B会一直发送101这样的ACK,提醒发送端A我要的是“101这个数据”
    • 如果发送端A连续三次收到同样的一个应答,那么会将对应的数据进行重新发送
    • 接收端B接收到数据之后,再次返回最后接收数据的应答(B在给A发送ACK的同时也在接收A发来的数据,存放在B的接收缓冲区)

    流量控制

     接收端处理数据的能力是有限的,发送端发送太快,接收端的接收缓冲区被写满,那么这时候发送端继续发送数据,就会导致丢包,继而引起丢包重传等一系列连锁反应
     所以TCP支持很据接收端的处理能力来决定发送端的发送数据,这就是流量控制
    
    • 接收端将自己的缓冲区大小写入TCP协议中窗口大小字段,通过ACK通知发送端
    • 接收端发现缓冲区快满时,会将窗口大小设置成一个更小的值发送给发送端
    • 如果接收缓冲区已满,会将窗口大小设置为0发送给发送端,这时不在发送数据,但是接收方会定时发送一个窗口探测数据段,把窗口大小告诉发送端

    TCP首部字段有一个16位窗口大小,也就是说窗口大小最大就是65535,在TCP首部40字节选项中还有一个窗口扩大因子M,实际窗口大小就是窗口字段值左移M位。

    拥塞控制

    在TCP刚开始建立连接,不可能一次行就发送大量数据,如果当前网络状态比较拥堵,那么发送的大量数据有很大部分都不会到达目的地
    TCP引入慢启动机制,先探测当前网络状况,再决定传输速度
    
    • 在刚开始的时候, 双方都维护一个拥塞窗口,发送开始,定义拥塞窗口大小为1
    • 每接收到一个ACK应答,拥塞窗口加1,
    • 每次发送数据包,将拥塞窗口和接收端主机反馈的窗口大小作比较,取较小的值作为发送的窗口

    慢启动
    在这里插入图片描述

    延迟应答

    • 窗口越大,网络吞吐量越大,传输效率越高,所以我们的目的是在保证网络不拥塞的情况下尽量提高传输效率
    • 如果接收缓冲区为1M,一次收到了600K数据,那么立即应答,返回的窗口大小就是400K
    • 如过接收端处理速度快,即使窗口再大一些,接收端也可以处理过来,如果接收端等待一会再应答,那么这时候返回的窗口大小就是1M,从而提高传输效率

    延迟应答的限制

    • 数量限制:每隔N个包就应答一次
    • 时间限制:超过最大延迟时间就应答一次

    TCP异常情况

    • 进程终止:释放文件描述符,可以发送FIN,与正常终止无区别
    • 机器重启:重启之前进程终止,可以正常发送FIN
    • 机器掉电:接收端认为连接还在,一旦接收端有写入操作,发现连接已经不在,就会进行reset请求再次连接,连接失败接收端释放连接。同时TCP也内置了一个保活定时器,会定时询问对方是否还在,如果不在也会释放连接

    IP协议

    在这里插入图片描述

    • 4位版本号:指定IP协议的版本,对于IPv4来说就是4
    • 4位头部长度:IP头部长度有多少个4字节,所以头部最大长度就是15*4=60字节
    • 8位服务类型:3位优先权(已弃用),4位TOS字段,1位保留字段(必须设置为0)。4为TOS为:最小延时,最大吞吐量,最高可靠性,最小成本,这四个只能选择一个
    • 16位总长度:IP数据报整体占多少字节
    • 16为标识:唯一的标识主机发送的报文,IP报文在数据链路层被分片,那么每一个片中的标识都是相同的
    • 3位标志字段:第一位保留,第二位置1表示进制分片(报文长度超过MTU,丢弃报文),第三位更多分片,最后一个分片是1,其他是0
    • 13位分片偏移:相对于原始IP报文开始处的偏移
    • 8位生存时间:数据报到达目的地的最大报文跳数,每经过一个路由,TTL-=1,一直到0都没有到达目的地,报文丢弃。
    • 8位协议:表示上层协议类型,把IP交给TCP还是UDP,其中ICMP是1,TCP是6,UDP是17
    • 16位头部校验和:使用CRC校验,鉴别头部是否损坏
    • 32位源地址和32位目标地址:表示发送端和接收端

    以太网帧在这里插入图片描述

    • 目的地址和源地址是指网卡的硬件地址,长度是48位
    • 帧协议类型字段有三种值,对应IP,ARP,RARP
    • 末尾是CRC校验
    展开全文
  • 剖析 TCP协议内部结构

    千次阅读 2022-03-17 08:41:22
    1、TCP协议 2、组成结构分析 1、源端口号:发送方端口号 2、目的端口号:接收方端口号 3、序列号:报文段的数据的第一个字节的序号 3、确认序号:期望收到对方下一个报文段的第一个数据字节的序号 4、首部长度(数据...
    1、TCP协议

    在这里插入图片描述

    2、组成结构分析

    1、源端口号:发送方端口号
    2、目的端口号:接收方端口号
    3、序列号:报文段的数据的第一个字节的序号
    3、确认序号:期望收到对方下一个报文段的第一个数据字节的序号

    4、首部长度(数据偏移):TCP报文段的数据起始距离TCP报文段的起始处有多远,即首部长度
    6、保留:保留不用是置为0

    7、紧急URG:此置为 1 ,紧急指针字段才有效,它告诉系统此报文段中有紧急数据,应尽快传送
    8、确认位ACK:此置为 1,确认号字段才有效,TCP规定,在连接建立后所有传达的报文段都必须把 ACK 置 1
    9、推送位PSH:此置为 1,即发送方,希望接收方接收缓冲区的数据,即TCP使用推送(PUSH)操作,接收方不再等整个缓冲区填满后再交付
    10、复位RST:用于复位相应的TCP连接
    11、同步SYN:仅在三次握手建立TCP连接时有效,当SYN = 1 且 ACK = 0,表明 请求连接报文段,SYN = 1 且 ACK = 0,同意建立连接报文段
    12、终止FIN:用来释放连接,FIN = 1,表明此报文段的数据发送已经发送完毕,并要求释放连接

    13、窗口:指发送本报文段的一方的接受窗口(而不是自己的发送窗口)
    14、校验和:校验字段检验的范围(包括首部和数据两部分),计算校验和时需要加上 12 字节的伪头部
    15、紧急指针:仅在 URG = 1时才有意义,它代表本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),即指出紧急数据在报文末尾的位置,(注意:及时窗口为0 时也可以发送紧急数据)
    16、选项:长度可变,最长可达 40 字节,当没有使用选项时,TCP首部长度是 20 字节

    整理不易 你的点赞、关注是对我莫大的鼓励
    在这里插入图片描述

    展开全文
  • 网络协议分析-TCP协议分析

    千次阅读 2020-01-06 21:13:43
    TCP协议的应用 TCP包结构 源端口号( 16 位):它(连同源主机 IP 地址)标识源主机的一个应用进程。 目的端口号( 16 位):它(连同目的主机 IP 地址)标识目的主机的一个应用进程。这两个值加上 IP 报头中的源...

    一 . TCP协议的应用

    在这里插入图片描述

    二 . TCP包结构

    在这里插入图片描述

    • 源端口号( 16 位):它(连同源主机 IP 地址)标识源主机的一个应用进程。

    • 目的端口号( 16 位):它(连同目的主机 IP 地址)标识目的主机的一个应用进程。这两个值加上 IP 报头中的源主机 IP 地址和目的主机 IP 地址唯一确定一个 TCP 连接。

    • 顺序号( 32 位):用来标识从 TCP 源端向 TCP 目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。如果将字节流看作在两个应用程序间的单向流动,则 TCP 用顺序号对每个字节进行计数。序号是 32bit 的无符号数,序号到达 2 32 - 1 后又从 0 开始。当建立一个新的连接时, SYN 标志变 1 ,顺序号字段包含由这个主机选择的该连接的初始顺序号 ISN( Initial Sequence Number )。

    • 确认号( 32 位):包含发送确认的一端所期望收到的下一个顺序号。因此,确认序号应当是上次已成功收到数据字节顺序号加 1。只有 ACK 标志为 1 时确认序号字段才有效。 TCP 为应用层提供全双工服务,这意味数据能在两个方向上独立地进行传输。因此,连接的每一端必须保持每个方向上的传输数据顺序号。

    • TCP 报头长度( 4 位):给出报头中 32bit 字的数目,它实际上指明数据从哪里开始。需要这个值是因为任选字段的长度是可变的。这个字段占 4bit ,因此 TCP 最多有 60 字节的首部。然而,没有任选字段,正常的长度是 20 字节。

    • 保留位( 6 位):保留给将来使用,目前必须置为 0 。

    • 控制位( control flags , 6 位):在 TCP 报头中有 6 个标志比特,它们中的多个可同时被设置为 1 。依次为:

      • URG :为 1 表示紧急指针有效,为 0 则忽略紧急指针值。
      • ACK :为 1 表示确认号有效,为 0 表示报文中不包含确认信息,忽略确认号字段。
      • PSH :为 1 表示是带有 PUSH 标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。
      • RST :用于复位由于主机崩溃或其他原因而出现错误的连接。它还可以用于拒绝非法的报文段和拒绝连接请求。一般情况下,如果收到一个 RST 为 1 的报文,那么一定发生了某些问题。
      • SYN :同步序号,为 1 表示连接请求,用于建立连接和使顺序号同步( synchronize )。
      • FIN :用于释放连接,为 1 表示发送方已经没有数据发送了,即关闭本方数据流。
    • 窗口大小( 16 位):数据字节数,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口大小。窗口大小是一个16bit 字段,因而窗口大小最大为 65535字节。

    • 校验和( 16 位):此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。

    • 紧急指针( 16 位):只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

    • 选项:最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size) 。每个连接方通常都在通信的第一个报文段(为建立连接而设置 SYN 标志的那个段)中指明这个选项,它指明本端所能接收的最大长度的报文段。选项长度不一定是 32 位字的整数倍,所以要加填充位,使得报头长度成为整字数。

    • 数据: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

    在这里插入图片描述
    请求端(通常称为客户)发送一个 SYN 报文段( SYN 为 1 )指明客户打算连接的服务器的端口,以及初始顺序号( ISN )。
    服务器发回包含服务器的初始顺序号( ISN )的 SYN 报文段( SYN 为 1 )作为应答。同时,将确认号设置为客户的 ISN 加 1以对客户的 SYN 报文段进行确认( ACK 也为 1 )。
    客户必须将确认号设置为服务器的 ISN 加 1 以对服务器的 SYN 报文段进行确认( ACK 为 1 ),该报文通知目的主机双方已完成连接建立。
    三次握手协议可以完成两个重要功能:它确保连接双方做好传输准备,并使双方统一了初始顺序号。初始顺序号是在握手期间传输顺序号并获得确认:当一端为建立连接而发送它的 SYN 时,它为连接选择一个初始顺序号;每个报文段都包括了顺序号字段和确认号字段,这使得两台机器仅仅使用三个握手报文就能协商好各自的数据流的顺序号。一般来说, ISN 随时间而变化,因此每个连接都将具有不同的 ISN 。
    在这里插入图片描述

    三 . 实例化

    导入scapy模块找到tcp协议
    在这里插入图片描述
    实例化tcp协议及复合ethernet,ip协议
    在这里插入图片描述

    赋值

    sport			#源端口
    dport			#目的端口
    

    在这里插入图片描述

    使用srp1()函数将packet发送
    在这里插入图片描述

    分析
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    最后是RST,未连接成功。
    在这里插入图片描述
    手动连接

    在这里插入图片描述

    在这里插入图片描述
    ps: TCP与UDP的比较:
    TCP提供可靠的,面向连接的传输服务
    UDP提供不可靠的,无连接的传输服务
    TCP是面向流的协议;UDP是基于数据报的协议
    TCP适用于一次传送大批量的数据
    UDP适用于多次少量数据的传输,实时性要求高的业务

    TCP与UDP的比较
    使用TCP传输的应用程序和协议包括:
    FTP
    Telnet
    SMTP
    使用UDP传输的应用程序和协议包括:
    RIP
    TFTP
    SNMP

    展开全文
  • 移植cJSON库,使用tcp协议制作http-json客户端发送js字段源码
  • (4层)TCP 首部字段

    千次阅读 2022-03-24 12:31:45
    TCP 有 6 个控制位,用来说明报文段的性质。 同步 SYN 确认 ACK 紧急 URG 推送 PSH 终止 FIN 复位 RST ...仅当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。TCP 规定,在连接建立后
  • 在传输层中,有两个协议UDP和TCP,通常UDP都是比较简单的协议字段,因为UDP不需要面向连接,也就是说,发送UDP数据包过去时候,不需要先建立连接再发送,可以直接发送,并且UDP不保证可靠性,也就是说,发送数据包...
  • 易语言TCP通信协议例子-易语言
  • TCP窗口字段理解

    千次阅读 2020-04-23 19:57:44
    TCP窗口字段理解 转载自:https://blog.51cto.com/shjrouting/1612855 误区2:TCP数据传输过程中,序列号增长的单元是包的个数。 解释:这是初学者最常犯的一个错误,原因是绝大多数老师为了方便学生理解,刚开始举...
  • 传输层协议 ——— TCP协议

    千次阅读 多人点赞 2022-06-11 14:58:17
    TCP全称为“传输控制协议(Transmission Control Protocol)”,TCP协议是当今互联网当中使用最为广泛的传输层协议,没有之一。TCP协议被广泛应用,其根本原因就是提供了详尽的可靠性保证,基于TCP的上层应用非常多...
  • TCP 协议头全解

    千次阅读 2022-04-02 18:30:50
    本文将带你学会 1. 从 wireshark 中来看面试中常问的 tcp 三次握手 四次挥手 真正的数据面目到底是什么? 2. 看到 TCP/IP 五层模型的具象化真实表达 3. 网络传输中 TCP 头全解析
  • TCP 协议有什么缺陷?

    千次阅读 2022-05-09 15:00:18
    所以,今天就跟大家聊聊,TCP 协议有哪些缺陷?主要有四个方面: 升级 TCP 的工作很困难; TCP 建立连接的延迟; TCP 存在队头阻塞问题; 网络迁移需要重新建立 TCP 连接; 接下来,针对这四个方面详细说一下。 ...
  • TCP报文-选项字段

    2021-11-26 18:19:19
    有的TCP选项没有后面两个字段,仅包含1字节的kind字段 第二个字段length(如果有的话)指定该选项的总长度 该长度包括kind字段和length字段占据的2字节 第三个字段info(如果有的话)是选项的具体信息 常见的TCP...
  • TCP协议详解

    千次阅读 2021-12-26 10:54:32
    TCP协议 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。 TCP报文段 TCP建立连接的过程(三次握手) TCP拆除连接的过程(四次...
  • TCP协议和UDP协议

    万次阅读 多人点赞 2022-02-18 13:30:13
    1.传输控制协议TCP 1.1TCP的主要特点: 1.1.1面向连接的运输层协议 socket部分讲述 tcp连接的建立 tcp连接的释放 tcp的有限状态机 1.1.2每一条TCP连接只能有两个端点,每一条TCP链接只能是点对点的(一对一)...
  • tcp header 的最大长度为60字节,而必须要有的固定长度也就是图一的前5层的20字节,每层占有32bit,也就是32/8=4字节,5层,5*4 = 20字节,那么第六层的可选项和填充也就是Tcp Options字段最大为60-20=40字节。...
  • TCP协议格式和特点

    千次阅读 2022-04-22 11:05:41
    文章目录1.协议格式:2.协议特性:2.1 面向链接2.1.1三次握手建立连接2.1.1四次挥手断开连接相关问题和知识点...7. TCP的保活机制(心跳探测)2.2 可靠传输2.2.1 安全有序传输(保证数据可靠到达对端并且有序进行交付)1
  • TCP协议】TCP 协议和 UDP 协议的优势和劣势 文章目录【TCP协议】TCP 协议和 UDP 协议的优势和劣势一、UDP 协议UDP 的封包格式校验和(Checksum)机制二、UDP 与 TCP的区别1.目的差异2.可靠性差异3.连接 vs 无连接4...
  • TCP协议

    千次阅读 2022-04-10 23:22:21
    一.TCP协议 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 特点: 1)基于流的方式; (2)面向连接;(在通信之前要通过三次握手建立链接) (3)...
  • UDP协议和TCP协议

    万次阅读 2022-02-19 21:22:31
    TCP对比:不可靠、无连接、面向报文 1. 网络的基本情况就是不可靠的 没有谁能保证数据一定是可以发送到对方的,可能丢失(丢包) 即使数据发送给对方了,也不能保证数据就是无差错的(不考虑有人故意修改数据的...
  • TCP 报文头部的字段 源端口、目标端口 如何标识唯一标识一个连接?答案是 TCP 连接的四元组——源 IP、源端口、目标 IP 和目标端口。 那 TCP 报文怎么没有源 IP 和目标 IP 呢?这是因为在 IP 层就已经处理了 IP ...
  • IP数据包格式协议字段 IP数据包格式 IP包数据格式解析: 版本(Version): 该字段包含的是IP的版本号,4bit,目前的版本是4.(即代表IPV4) 首部长度(Header length):该字段用于表示IP地址包头长度,4bit。...
  • TCP 协议报文格式

    千次阅读 多人点赞 2022-01-03 13:06:21
    TCP 协议报文格式端口号序列号确认号数据偏移字段保留字段标志位字段????窗口大小字段TCP 校验和字段紧急指针字段可选项字段 报文格式 TCP UDP 的报头和 Http 的报头差别很大;Http 是文本格式的协议 (按照字符串...
  • TCP协议工作机制详解

    千次阅读 2022-03-21 18:45:20
    TCP协议 确认应答 超时重传 连接管理 滑动窗口 流量控制 拥塞控制 延迟应答 捎带应答 粘包问题 异常情况
  • TCP 协议(包含三次握手,四次挥手)

    万次阅读 多人点赞 2022-01-04 18:08:48
    TCP 特性1.确认应答 (可靠传输的最核心机制) 1.确认应答 (可靠传输的最核心机制) 可靠传输的最核心机制
  • TCP/UDP传输层协议字段信息及其内容

    千次阅读 2019-07-29 11:27:15
    典型的有 TCP和UDP UDP协议 特性:无连接,不可靠,面向数据报 字段信息: 四个部分 16位源端口 16位目的端口 16位数据长度 16位校验和 各为2k 16位数据报长度:udp数据报的总长度(包括UDP的首部)为了避免接收半条...
  • 什么是TCP协议?

    千次阅读 2021-08-08 09:51:00
    什么是TCP协议TCP协议是传输控制协议,位于应用程序层和网络层之间,用于提供可靠的流传递服务,即以字节流的形式传递数据,也以字节流的形式接收数据。TCP使用确认机制检查数据的安全和声音到达,在发送方执行多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 162,463
精华内容 64,985
关键字:

tcp协议字段