TPC/IP 协议头部说明

本章的内容主要是将 IP 协议头部、TCP 协议头部、UPD 协议进行说明,其他的介绍将在后续的章节中进行详细介绍。

注:本章内容来自《TCP/IP 详解 卷一 协议》

IP 协议

1.IPv4 头部结构

版本

IPv4=4 / IPv6=6

IHL

头部长度,保存 IPv4 中32位字的数量(4个字节),是一个4位字段,表示最多15个32位字即60个字节,IPv6 没有这个字段,固定40个字节

TCP 头部结构

DS

区分服务 RFC2474、RFC2475、RFC3260

ECN

显示拥塞通知

总长度

IP数据包总长度,以字节为单位,65535,通过IHL可以知道数据报从哪里开始。

标识

为了避免将一个数据报分片和其他数据报分片混淆,发送主机通常在每次发送数据报时都将一个内部计数+1,计数器复制到这个标识字段

标志

RF/DF/MF

分片偏移

生存期

数据报可经路由的上限,每经过一个路由就减一,避免陷入循环

协议

协议包含一个数字,表示有效荷载部分的数据类型,最常用的为17(UPD) 和 6(TCP)

头部校验

仅计算IPv4的头部,不检查有效荷载的正确性,其他协议必须通过自己的机制进行检查重要数据。每次IP跳转都会被重新计算一次

 2.IPv6 头部结构

版本号

DS

ECN

流标签

流标签字段是 IPv6 数据报中新增的一个字段,占20位,可用来标记报文的数据流类型,以便在网络层区分不同的报文。流标签字段有源节点分配,通过流标签、源地址、目的地址三元组方式就可以唯一标识一条通信流,而不用像 IPv4 那样需要使用五元组方式(源地址、目的地址、源端口、目的端口和传输层协议号)。

负载长度

有效载荷长度字段是以字节为单位的标识 IPv6 数据报中有效载荷部分(包括所有扩展报头部分)的总长度,也就是除了 IPv6 的基本报头以外的其他部分的总长度,占20位。

下一个头部

下一个头部字段用来标识当前报头(或者扩展报头)的下一个头部类型,占8位。每种扩展报头都有其对应的值。下一个头部字段内定义的扩展报头类型与 IPv4 中的协议字段值类似,但在 IPv6 数据报中,紧接着 IPv6 报头的可能不是上层协议头部(当没有扩展报头或者为最后一个扩展报头时才是上层协议头),而是 IPv6 扩展报头。

当 IPv6 数据报文承载的是上层协议 ICMPv6、TCP、UDP等的时候,Next Header 的值分别为 58、6、17,这个时候和 IPv4 报文头部中的 Protocol 字段很类似;

当不是以上3种协议类型的时候,IPv6 报文头部紧接的是扩展头部。扩展头部是 IPv6 引入的一个新的概念,每个 IPv6 的数据报文可以承载0个或多个扩展头部,扩展头部通过链表的形式组织起来。当 IPv6 数据报文承载着扩展头部的时候,Next Header 的数值为扩展头部的类型值。

跳数限制

 

 3.IPv6 相比 IPv4

        IPv6 去除了 IPv4 报头中的头部长度、标识、标志、段偏移、校验和、选项、填充这么多字段,却只增加了流标签这一个字段,因此 IPv6 报头处理和I Pv4 报头处理相比大大简化,提高了处理效率。另外,IPv6 为了更好地支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有的结构就能做到,理论上可以无限扩展,体现了优异的灵活性。

UDP协议

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

        (1)无连接。

        (2)尽最大努力的交付。

        (3)面向报文。

        (4)无拥塞控制。

        (5)支持一对一、一对多、多对一、多对多的交互通信。

        (6)首部开销小(只有四个字段:源端口、目的端口、长度、检验和)。UDP 是面向报文的传输方式是应用层交给 UDP 多长的报文,UDP 发送多长的报文,即一次发送一个报文,因此,应用程序必须选择合适大小的报文。

1.UDP协议头部结构

 

长度

长度是 UDP 头部和 UDP 数据的总长度。

校验和

端到端的传输层校验和。它覆盖 UDP 头部、UDP 数据和一个伪头部

 2.UDP 伪头部

 

3.UDP/IP分片 

例如:前置条件 MTU=1500   Data Lenght= 2992。

说明:

一个数据包包含了2992字节的应用数据,和8个 UDP头部,结果产生一个总长度为3020数据报(包含 Ipv4 头部)。当数据报被分成三组时,额外产生了40个额外字节,因此总发生字节为3060

偏移 以8个字节为单位:

185*8

370*8

重组:

当 MF=0 的分片被接收到时,重组程序才能确认原始数据的长度,它等于分片偏移的值(乘以8) 加上 IPv4 总长度的值(减去IPv4头部长度)。(370*8+40==3000)

因为每个偏移字段都是相对原始数据报的,重组进程可以处理非顺序到达的分片。

重组超时:

一个数据报的任何一个分片首先到达,IP 层就得启动一个计时器,如果不这样做的话,不能达到的分片,可能会最终导致接收方用尽缓存。留下攻击的机会。

分片是透明的,但如果一个分片丢失,整个数据报就丢失。要知道IP自身没有差错纠正。所以要么程序自己实现超时和重传。要么尽量避免分片

4. UDP SOCKET 连接流程图

TCP 协议 

传输控制协议 TCP(Transmission Control Protocol)特点:

        (1)面向连接,每一个 TCP 连接只能是点对点的(一对一)。

        (2)提供可靠交付服务。

        (3)提供全双工通信。

        (4)面向字节流。

        (5)应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序看成是一连串的无结构的字节流。TCP 有一个缓冲,当应该程序传送的数据块太长,TCP 就可以把它划分短一些再传送。

1.TCP头部结构

头部字段:

序列号

标识了 TCP 发送端到 TCP 接收端的数据流的一个字节,该字节代表着包含该序列号的报文段的数据中的第一个字节。

确认号

包含的值是该确认号的发送方期待收到的下一个序列号,即最后被成功接收的数据字节的序列号加1.

SYN

建立新连接时发送的第一个报文。序列号字段包含了在本次连接的这个方向上要使用的第一个序列号,后续序列号和返回的 ACK 号,也在这个方向上。注意,初始化序列号是随机选择的。

头部长度

头部的长度,4位,限定最多60个字节(带选项)。不带选项20个字节

CWR

拥塞窗口减(发送方降低它的发送速率)

ECE

ECN 回显(发送方接收到了一个更早的拥塞通告)

URG

紧急

ACK

确认(确认号字段有效,一般建立连接之后启用)

PSH

推送(接收方应尽快给应用程序传送这个数据)

RST

重置连接(连接取消),相当 Ctl+C

FIN

该报文段的发送方已经结束向对方发送数据。

TCP校验和

覆盖了 TPC 的头部和数据以及头部中的一些字段

紧急指针

只有在 URG 位字段被设置时才有效,这个“指针”是一个必须要加到报文段的序列号字段上的正偏移,以产生紧急数据的最后一个字节的序列好

选项字段:

MSS

最大段大小指 TCP 协议所允许的从对方接收到的最大报文段(不包括 TCP 与 IP 头部),没有指明的情况下,默认536字节

SACK

确认选项,由于 TCP 采取的是累计 ACK 确认,TCP 不能正确地确认之前已经接收到数据。由于接收的数据也是无序的,所以接收到数据的序列号也是不连续的,会出现很多空洞,TCP接收方,需要防止应用程序使用超出空洞的数据。当接收到乱序的数据时,它能提供一个SACK 选项来描述这些乱序数据,从而帮助对方有效的重传。

WSOPT

窗口缩放因子

UTO

用户超时

TCP-AO

认证选项

TSOPT

时间戳选项

NOP

无操作

2.TCP SOCKET 连接流程图

 UDP 和 TCP 区别

TCP 与 UDP 的一个基本区别, TCP 是可靠通信协议, 而 UDP 是不可靠通信协议。

TCP 的可靠性含义: 接收方收到的数据是完整, 有序, 无差错的。

UDP 不可靠性含义: 接收方接收到的数据可能存在部分丢失, 顺序也不一定能保证。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCPTCP/IP协议有以下区别: 1. TCP是传输控制协议(Transmission Control Protocol)的缩写,是一种面向连接的、可靠的传输协议。它负责将数据分割成适合网络传输的数据包,并确保这些数据包按照正确的顺序到达目标主机。TCP提供了可靠的数据传输,通过使用确认、重传和流量控制等机制来保证数据的可靠性。 2. TCP/IP是一组协议的代名词,包括许多别的协议,组成了TCP/IP协议簇。TCP/IP协议簇是Internet的基础,也是当今最流行的组网形式。它由多个协议组成,包括IP协议TCP协议、UDP协议、FTP协议、DNS协议等。TCP/IP协议簇采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。 3. TCPTCP/IP协议簇中的一个协议,位于协议簇的第三层,对应OSI的第四层。它负责在网络中建立可靠的连接,并提供可靠的数据传输服务。TCP通过使用序列号、确认号、窗口控制和拥塞控制等机制来保证数据的可靠性和流量控制。 综上所述,TCP是一种传输协议,而TCP/IP是一组协议的集合,其中TCP是其中的一个重要协议TCP/IP协议簇提供了可靠的数据传输和网络通信的基础。 #### 引用[.reference_title] - *1* *3* [TCP/IP协议簇及TCP/IP协议四层模型](https://blog.csdn.net/u010091664/article/details/125696113)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [TCP/IP协议与OSI协议详解](https://blog.csdn.net/m0_70888041/article/details/127612505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值