TCP/IP协议(全的一b)应用层,数据链层,传输层,网络层,以及面试题

目录

TCP/IP协议介绍

协议是什么,有什么作用?

网络协议为什么要分层

TCP/IP五层网络协议每层的作用

应⽤层

DNS的作用及原理

DNS工作流程

数据链路层

以太⽹帧格式

MAC地址的作用

ARP协议的作⽤

ARP协议的工作流程

[MTU以及MTU对 IP / UD / TCP 协议的影响](#MTU以及MTU对 IP / UD / TCP 协议的影响)

传输层(TCP协议)

介绍TCP协议段格式

理解端⼝号的概念

能够基于UDP实现可靠传输.

⽹络层(IP协议)

IP协议的头格式

IP地址的作用:

局域网(子网/LAN)

局域网地址

广域网(公网/WAN)

广域网地址

MAC地址的作用:

对⽐理解MAC地址和IP地址

NAT技术

如何解决IPv4的IP地址数⽬不⾜的问题

理解IP数据分包组包

为什么分包

分包组包过程中和哪些IP报头字段有关联

组包时如何保证数据的顺序和完整性

MSS

⽹络层的IP地址路由过程


TCP/IP协议介绍

协议是什么,有什么作用?

协议,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵从的⼀组约定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能 相互通信交流。
协议(protocol)最终体现为在⽹络上传输的数据包的格式。
网络协议对于 实现网络通信的互操作性、标准化、数据封装、路由和寻址、错误检测和恢复、流量控制以及安全性 等方面都起着至关重要的作用

网络协议为什么要分层

一整个协议太庞大,不利于学习和维护,拆分出来的协议又太多了,就引入协议分层,只有相邻层次之间才可以沟通,不能跨层沟通,好处就是

  1. 上层协议直接用下层协议即可,不需要了解下层协议的细节(相当于两个人打电话,直接用对应的电话就好,电话内部的怎么接收信号,转换信号怎么传播怎么解码,上层人不需要知道,使用接口就行)

  2. 某一层协议替换之后,对其他层没有影响(换个电话用用)

TCP/IP五层网络协议每层的作用

  • 1. 应用层 (Application Layer)

功能:定义了应用程序之间通信的协议和方式。例如,HTTP用于网页浏览,SMTP用于电子邮件发送,FTP用于文件传输等。
关注传输的数据在应用程序中如何使用,如数据的表示、加密、压缩等。

  • 2. 传输层 (Transport Layer)

功能:提供端到端的通信服务,确保数据包的可靠传输或提供无连接的不可靠服务。

关注通信的起点和终点。主要协议包括TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供可靠的数据传输服务,UDP提供不可靠的数据传输服务。

  • 3. 网络层 (Network Layer)

功能:负责数据包的路由和转发,将数据从源地址传输到目的地址。
关注通信中的路线规划。主要协议是IP(互联网协议),它定义了数据包的格式、地址和路由规则。此外,还包括ICMP(Internet控制消息协议)、IGMP(Internet组管理协议)等辅助协议。

  • 4. 数据链路层 (Data Link Layer)

功能:在相邻节点之间无差错的传输数据帧,并负责帧的封装和解封装、差错检测等。
关注相邻节点之间的通信细节。该层定义了如何访问传输介质(如局域网、广域网等),以及如何将数据封装成帧进行传输。主要协议包括以太网、令牌环、PPP(点对点协议)等。

  • 5. 物理层 (Physical Layer)(硬件层面不重点介绍)

功能:负责传输比特流,是网络通信的基础设施。

关注网络通信的物理连接,包括电缆规格、电压级别、接口类型等。该层定义了数据传输的电气、机械和定时接口等特性,确保比特流在物理介质上的正确传输。

应⽤层

• 应⽤层的作⽤: 满⾜我们⽇常需求的⽹络程序, 都是在应⽤层

DNS的作用及原理

DNS是互联网上的域名解析系统,它建立了一个分布式数据库,将人们易于记忆的域名映射到计算机易于识别的IP地址。这样用户就可以通过输入域名来访问互联网资源,而无需记住复杂的IP地址。

在浏览器中键入www.microsoft.com这个域名, DNS系统会将www.microsoft.com这个域名解析为相应的IP地址207.46.230.229

DNS工作流程

  • 用户请求:当用户在浏览器中输入一个域名时,计算机会向本地域名服务器(Local DNS Server)发送一个域名解析请求。
  • 本地查询:本地域名服务器首先在其缓存中查找该域名的解析记录。如果找到,则直接返回IP地址给用户;否则,继续下一步。
  • 逐级查询:本地域名服务器会向根域名服务器(Root DNS Server)查询,根域名服务器会返回顶级域名服务器(TLD Server)的地址。接着,本地域名服务器向顶级域名服务器查询,顶级域名服务器会返回权威域名服务器(Authoritative DNS Server)的地址。最后,权威域名服务器会返回相应的IP地址。
  • 结果返回:本地域名服务器将解析到的IP地址返回给用户,并将该结果保存在缓存中,以便后续使用。

数据链路层

数据链路层的作⽤: 两个设备(同⼀种数据链路节点)之间进⾏传递数据
**以太网:**以太⽹是⼀种技术标准,既包含了数据链路层的内容, 也包含了⼀些物理层的内容. 例如: 规定了⽹络拓扑结构, 访问控制⽅式, 传输速率等;

以太⽹帧格式

  • 源地址和⽬的地址是指⽹卡的硬件地址(也叫MAC地址), ⻓度是48位,是在⽹卡出⼚时固化的;
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
    1. IP:当Type字段的值为0x0800时,代表帧包含的是IP协议的数据。
    2. ARP:当Type字段的值为0x0806时,代表帧包含的是ARP(地址解析协议)的数据。ARP用于将网络层(IP层)地址解析为链路层(MAC层)地址。
    3. RARP:当Type字段的值为0x8035时,代表帧包含的是RARP(逆地址解析协议)的数据。RARP与ARP相反,它用于将MAC地址解析为IP地址,但RARP在实际应用中已经较少使用。
  • 帧末尾是CRC校验码,主要功能是检验数据是否在传输过程中被破坏,可能是由于物理干扰等原因

MAC地址的作用

  • MAC地址(Media Access Control Address)是物理地址或硬件地址,用于在数据链路层进行数据帧的目标设备识别和传输控制。
  • 它由6个字节(48位)组成,通常用十六进制数表示,例如00:1A:2B:3C:4D:5E。
  • MAC地址被永久地嵌入到设备的网络接口卡(NIC)中,由设备制造商在设备制造过程中分配,并且无法更改。

ARP协议的作⽤

ARP协议建⽴了主机 IP地址和MAC地址的映射关系.
当主机需要发送数据给另一台主机时,需要知道目标主机的MAC地址,如果接收到的数据包的MAC地址和本机的MAC地址不一样会被直接丢弃。ARP协议可以通过查询网络中其他主机的IP和MAC地址映射表,将目标主机的IP地址转换为对应的MAC地址。

  • IP地址到MAC地址的映射:当主机需要发送数据给另一台主机时,需要知道目标主机的MAC地址。ARP协议可以通过查询网络中其他主机的IP和MAC地址映射表,将目标主机的IP地址转换为对应的MAC地址。
  • ARP缓存:ARP协议会将查询到的IP和MAC地址映射保存在本地缓存中,以便下次快速查询。这样可以减少网络中的广播流量,提高通信效率。
  • 支持局域网通信:在局域网中,设备之间通过MAC地址进行通信。通过ARP协议,本地主机可以向局域网中的所有设备广播ARP请求,以获取目标设备的MAC地址,从而实现设备之间的通信。
  • 实现无连接协议的功能:在以太网上,数据包的传输是无连接的。ARP协议通过动态地将IP地址和MAC地址进行绑定,使得源主机无需事先知道目标主机的MAC地址,就可以直接向目标主机发送数据包。
  • 网络层和数据链路层的转换:ARP协议位于网络层和数据链路层之间,起着一个转换器的作用。网络层使用IP地址来标识设备,而数据链路层使用MAC地址来标识设备。ARP协议可以根据IP地址找到对应的MAC地址,并将数据包从网络层转发到数据链路层。

ARP协议的工作流程

以两台主机A和B为例,如果主机A需要向主机B发送数据,ARP协议的工作流程如下:

  • 本地ARP缓存查询:主机A首先会在自己的ARP缓存中查找主机B的MAC地址。如果找到了,则直接使用该地址进行通信;否则进入下一步。
  • ARP请求广播:主机A会向整个局域网发送一个ARP请求广播包,该广播包中包含主机A的IP地址、MAC地址以及主机B的IP地址。局域网内的所有设备都会收到这个广播包。
  • ARP响应:当主机B收到这个ARP请求广播包后,会检查请求中的目标IP地址是否与自己匹配。如果匹配,则主机B会向主机A发送一个ARP响应包,其中包含自己的MAC地址。
  • ARP缓存更新:主机A收到主机B的ARP响应包后,会将主机B的IP地址和MAC地址映射关系保存在自己的ARP缓存中,并使用该地址发送数据包给主机B。
  • ARP缓存超时:如果主机A在一段时间内没有再次向主机B发送数据,则主机A的ARP缓存中的相关条目可能会因为超时而被自动删除,以避免ARP缓存污染攻击。

MTU以及MTU对 IP / UD / TCP 协议的影响

MTU(Maximum Transmission Unit,最大传输单元)是网络层协议的一部分,它定义了数据链路层帧中能够承载的最大数据长度。这个长度包括了网络层数据报(如IP数据报)的头部和数据部分。(发快递对包裹尺寸的限制)

对IP协议的影响:

  • 数据包分片:当IP数据报的大小超过MTU时,发送方会将其分割成多个较小的数据包(分片),每个分片都有自己的IP头部,但共享相同的16位标识符。
  • 重组:接收方会根据每个分片中的标识符、标志位和片偏移信息,将多个分片重新组合成一个完整的IP数据报。
  • 丢包风险:如果分片中的一个或多个丢失,接收方可能无法成功重组原始数据报,导致数据丢失。

对UDP协议的影响:

  • 分包:与IP协议类似,当UDP数据报的大小超过MTU时,也会被分割成多个IP数据包进行传输。
  • 无重传机制:UDP协议本身不提供重传机制,所以如果分片中的一个或多个丢失,UDP数据将完全丢失,且不会被重新传输。

对TCP协议的影响:

  • MTU探测与调整:TCP协议会通过MTU探测机制来确定当前路径的MTU大小,并据此动态调整其发送的数据包大小。
  • 避免分片:通过MTU探测和调整,TCP协议可以尽量避免数据包的分片,从而提高传输效率和可靠性。
  • 重传机制:TCP协议具有强大的重传机制,如果数据包丢失,它会重新发送丢失的数据包,直到成功接收为止。

传输层(TCP协议)

传输层的作⽤: 负责数据能够从发送端传输接收端.

介绍TCP协议段格式

  • **源端口号(16位):**用于标识发送方应用程序的端口号,表示数据是从哪个进程来。
  • **目的端口号(16位):**用于标识接收方应用程序的端口号,表示数据到哪个进程去。
  • **序号(32位):**用于标识发送方发送的数据字节所占的序列号,表示本报文段所发送数据的第一个字节的编号。
  • **确认序号(32位):**用于确认接收方已经收到的数据字节的序列号,即接收方期望收到发送方下一个报文段的第一个字节数据的编号。
  • **首部长度(4位):**用来指明TCP报文段首部的长度,以4字节为单位。最大为60字节,最小为20字节。通过这个字段可以确定TCP报头中是否包含选项字段。
  • **保留(6位):**保留的6位用于将来的功能扩展,目前必须全部为0。
  • **控制位(6位):**用于控制TCP报文段的传输状态和控制信息,包括:

URG(紧急指针有效位):告知接收方此报文段中有紧急数据需要处理。

ACK(确认序号有效位):表示确认序号字段中的数据有效。

PSH(推送位):告知接收方应立即将数据交给应用程序,而不是等待缓冲区填满。

RST(复位位):用于重置连接。

SYN(同步位):用于建立连接。

FIN(结束位):用于终止连接。

  • **窗口大小(16位):**指明发送方的接收窗口大小,用于流量控制。
  • **校验和(16位):**用于检验TCP报文段是否在传输过程中发生错误。发送端基于数据内容校验生成一个数值,接收端根据接收的数据校验生成一个值,如果两个值不匹配,则认为数据有问题。
  • **紧急指针(16位):**仅当URG标志位被设置时有效,表示紧急数据的末尾位置。
  • **选项(可变长度):**用于提供更多的可选功能,如MSS、时间戳等。这些可选字段可以用于实现拥塞控制、数据加密、性能优化等功能。

理解端⼝号的概念

端口号标识了主机上通信的不同应用程序

  • 0 - 1023: 知名端⼝号, HTTP, FTP, SSH等这些⼴为使⽤的应⽤层协议, 他们的端⼝号都是固定的.
  • 1024 - 65535: 操作系统动态分配的端⼝号. 客⼾端程序的端⼝号, 就是由操作系统从这个范围分配 的.

认识知名端⼝号

  • ssh服务器, 使⽤22端⼝
  • ftp服务器, 使⽤21端⼝
  • telnet服务器, 使⽤23端⼝
  • http服务器, 使⽤80端⼝
  • https服务器, 使⽤443

我们⾃⼰写⼀个程序使⽤端⼝号时, 要避开这些知名端⼝号

  • 认识UDP协议, 了解UDP协议的特点.

  • 认识TCP协议, 理解TCP协议的可靠性. 理解TCP协议的状态转化.

  • 掌握TCP的连接管理, 确认应答, 超时重传, 滑动窗⼝, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性.

  • 理解TCP⾯向字节流, 理解粘包问题和解决⽅案.

上面关于TCP和UDP的一些问题可以参考小编之前发过的文章
TCP协议的相关特性,UDP的简单介绍https://blog.csdn.net/s13057696399/article/details/140560456?spm=1001.2014.3001.5501

能够基于UDP实现可靠传输.

实际就是参考TCP的可靠性机制, 在应⽤层实现类似的逻辑;

  • 1. 序列号

每个数据包都被分配一个唯一的序列号,以便接收端能按正确的顺序重新组装数据。

  • 2. 确认应答 (ACK)

接收端在成功接收数据包后,会发送一个ACK包给发送端,其中包含了已接收数据包的序列号。如果发送端未收到ACK,则会在一定时间后重传数据包。

  • 3. 超时重传

发送端为每个数据包设置一个定时器。如果定时器超时且未收到对应的ACK,则重传该数据包。超时时间可以根据网络条件动态调整。

  • 4. 连接管理 (模拟)

三次握手 (模拟):

发送端发送一个带有SYN标志的数据包请求建立连接。

接收端回复一个带有SYN和ACK标志的数据包表示同意连接请求。

发送端再发送一个带有ACK标志的数据包以确认连接建立。

四次挥手 (模拟):

一方发送一个FIN包请求关闭连接。

另一方回复一个ACK包表示收到关闭请求。

当另一方也准备好关闭连接时,它发送一个FIN包。

最后,接收方回复一个ACK包以确认连接关闭。

注意:由于UDP是无连接的协议,这些握手和挥手过程实际上是通过发送特定的数据包来模拟的。

  • 5. TCP状态转换

在UDP的可靠传输实现中,虽然不需要完整的TCP状态机,但可能需要跟踪一些关键状态,如等待ACK、重传等。

  • 6. 滑动窗口,解决滑动窗口产生的丢包问题

发送端和接收端可以协商一个滑动窗口大小,允许发送端在接收到ACK之前连续发送多个数据包。接收端通过ACK告知发送端哪些数据包已接收,发送端据此调整滑动窗口。

如果在滑动窗口内的数据包丢失,发送端会在收到ACK时检测到丢包,并重新发送这些数据包。

  • 7. 流量控制和拥塞控制

流量控制:通过接收端的ACK包来控制发送端的发送速率,避免接收端缓冲区溢出。

拥塞控制:通过调整发送速率、重传策略等方式来避免网络拥塞。

  • 8. 延时应答和捎带应答

延时应答:接收端可以延迟发送ACK以合并多个ACK,减少网络开销。

捎带应答:如果接收端需要发送数据给发送端,可以将ACK捎带在数据包中一起发送。

  • 9. 面向字节流

在应用层上,将数据封装为字节流进行传输,并在接收端重新组装成原始数据。

  • 10. 异常情况

处理丢包、乱序、超时、重传等异常情况,确保数据的完整性和可靠性。

⽹络层(IP协议)

• ⽹络层的作⽤: 在复杂的⽹络环境中确定⼀个合适的路径.

IP协议的头格式

  • **版本号:**占4位,用来指定IP协议的版本。对于IPv4来说,版本号字段的值为4。
  • **首部长度:**占4位,用来表示IP协议头部的长度,以4字节为单位。最大值为15,即IP协议头部最大长度为60字节。
  • 服务类型(Type of Service, TOS):占8位,包含三个已经弃用的优先权比特位,一个保留字段(必须置为0),以及四个有效的TOS字段。这四个字段分别表示最小延时、最大吞吐量、最高可靠性和最小成本,且这四者相互冲突,只能选择一个为侧重点。
  • 总长度:占16位,用来标识IP数据包的整体长度,包括头部和有效载荷的长度。:
  • 标识:占16位,表示当前IP数据包分片是属于哪一个完整的IP报文,同一个IP数据包当中的所有分片具有相同的标识。
  • 标志:占3位,表示包被分片的相关信息,如是否允许拆包、是否是最后一个包等。
  • 片偏移:占13位,用来标识分片在原来数据之中的位置,用于接收方进行组装。
  • 生存时间(Time To Live, TTL):占8位,描述数据包在网络上还能存活多久,即允许经过的路由器的个数。每经过一个路由器,TTL值减1,当TTL为0时,数据包将被丢弃。
  • 协议:占8位,标识传输层使用的协议,如UDP或TCP,以便在数据分用时决定将数据交给哪个传输层协议。
  • 首部校验和:某些版本的IP协议头中包含此字段,用于校验IP头部的完整性,但不包括数据部分。
  • 源IP地址和目的IP地址:分别占32位,表示数据包的发送方和接收方的IP地址。

IP地址的作用:

  • IP地址(Internet Protocol Address)是一个逻辑地址,用于在跨越不同网络的情况下进行通信时对设备进行寻址。
  • 它由32位二进制数组成(IPv4),通常以4个十进制数(0-255)表示,并用点号分隔开,例如192.168.0.1。
  • IP地址分为公共IP地址和私有IP地址。公共IP地址用于互联网上的通信,而私有IP地址则在局域网内部使用。
  • IP地址用于网络层的路由和寻址,它告诉路由器数据包应该向哪个方向发送,以便最终到达目标设备。

局域网(子网/LAN)

局域网是指在相对较小的地理范围内(如办公室、学校、企业内部等)建立起来的计算机网络。局域网通常用于连接位于同一物理位置的设备,使这些设备能够进行数据交换和共享资源。局域网一般覆盖范围小,设备自己购买和维护,而且带宽是固定的。局域网的设备不能直接被外部访问

局域网地址

也称为内网IP地址或私有IP地址,是在局域网内部使用的IP地址。这些地址不会被用于公共互联网,而是在局域网内部用于计算机之间的通信。私有IP地址包括A类地址(如10.X.X.X)、B类地址(如172.16.0.0--172.31.255.255)和C类地址(如192.168.X.X)。

广域网(公网/WAN)

广域网是指覆盖范围更广、跨越较大地理区域的计算机网络。与局域网相比,广域网连接的地理范围更大,可以跨越城市、国家甚至全球范围。广域网就是我们通常所说的Internet,它是一个遍及全世界的网络。

广域网地址

也称为公网IP地址或外网IP地址,是广域网中每一台电脑(或其他网络设备)所具有的唯一标识符。广域网IP地址一般要到ISP(Internet服务提供商)处交费之后才能申请到,而且不能重复。广域网上的设备可以通过公网IP地址与其他设备进行通信,实现全球范围内的数据交换和信息共享。

  • ⼀个路由器可以配置两个IP地址, ⼀个是WAN⼝IP, ⼀个是LAN⼝IP(⼦⽹IP).
  • 路由器LAN⼝连接的主机/手机, 都从属于当前这个路由器的⼦⽹中.
  • 不同的路由器, ⼦⽹IP其实都是⼀样的(通常都是192.168.1.1). ⼦⽹内的主机IP地址不能重复. 但是⼦⽹之间的IP地址就可以重复了
  • 每⼀个家⽤路由器, 其实⼜作为运营商路由器的⼦⽹中的⼀个节点. 这样的运营商路由器可能会有很多级, 最外层的运营商路由器, WAN⼝IP就是⼀个公⽹IP了.
  • ⼦⽹内的主机需要和外⽹进⾏通信时, 路由器将IP⾸部中的IP地址进⾏替换(替换成WAN⼝IP), 这样 逐级替换, 最终数据包中的IP地址成为⼀个公⽹IP. 这种技术称为NAT(Network Address Translation,⽹络地址转换).

MAC地址的作用:

  • MAC地址(Media Access Control Address)是物理地址或硬件地址,用于在数据链路层进行数据帧的目标设备识别和传输控制。
  • 它由6个字节(48位)组成,通常用十六进制数表示,例如00:1A:2B:3C:4D:5E。
  • MAC地址被永久地嵌入到设备的网络接口卡(NIC)中,由设备制造商在设备制造过程中分配,并且无法更改。

对⽐理解MAC地址和IP地址

  • IP地址描述的是路途总体的起点和终点;
  • MAC地址描述的是路途上的每⼀个区间的起点和终点;

NAT技术

NAT技术当前解决IP地址不够⽤的主要⼿段, 是路由器的⼀个重要功能;

  • NAT能够将私有IP对外通信时转为全局IP. 也就是就是⼀种将私有IP和全局IP相互转化的技术⽅法:
  • 很多学校, 家庭, 公司内部采⽤每个终端设置私有IP, ⽽在路由器或必要的服务器上设置全局IP;
  • 全局IP要求唯⼀, 但是私有IP不需要; 在不同的局域⽹中出现相同的私有IP是完全不影响的;

如何解决IPv4的IP地址数⽬不⾜的问题

注: IPv4有2^32个地址大约42亿个IP地址

  • 使用NAT技术(网络地址替换),NAT技术允许私有网络中的设备使用私有IP地址,并通过NAT路由器或网关与外部网络进行通信。多个私有网络中的设备可以共享一个或少数几个公网IP地址与外部网络通信,从而节省了公网IP地址的使用。只能缓解问题
  • IPV6:可以表示2^128个地址,地址数量可以给地球上每一粒沙子一个独一无二的IP地址,IPv6是更根本和长远的解决方案

理解IP数据分包组包

为什么分包

在TCP/IP模型中,网络层的下一层是数据链路层,网络层中的IP协议并不是把数据直接发送到了网络中,而是交给了数据链路层,数据链路层才是真正将数据发送到网络中。

数据链路层中使用的是MAC帧协议,该协议规定自己的有效载荷不能超过1500个字节。虽然可以修改,但是这里我们不考虑,就按默认情况来说。所以这里需要网络层进行分片后再交给链路层

分包组包过程中和哪些IP报头字段有关联

  • 标识字段(Identification):用于唯一标识一个IP数据报,确保在拆包组包过程中能够正确地识别原始数据包。每个片段都应该具有相同的标识符,以便在接收端重新组装成原始数据包。
  • 片偏移字段(Fragment Offset):指示当前片段在整个原始数据包中的位置。在分包过程中,每个片段都需要设置正确的偏移量,以便在组装时能够重新构建完整的数据包。
  • 标志位字段 (Flags):
    • **第一位保留(**保留的意思是现在不用, 但是还没想好说不定以后要用到).
    • 第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文.
    • 第三位表示"更多分片",当前是1,表示后面还有被分片的报文在路上,当前是0表示它是最后一个分片

组包时如何保证数据的顺序和完整性

  • 利用片偏移字段:通过片偏移字段来确定每个片段在原始数据包中的位置,从而确保数据在重新组装时能够按照正确的顺序排列。
  • 利用标识符字段:唯一性,若报文被片分,同一报文中被片分的标识位相同
  • 计算校验和:在组包过程中重新计算校验和字段的值,以确保数据包在传输过程中没有被篡改或损坏。如果校验和不匹配,则不能使用该数据包片段进行组包。

MSS

  • 优化数据传输效率:MSS用于在TCP连接建立时,由收发双方协商确定每一个报文段所能承载的最大数据长度(不包括文段头)。通过选择合适的MSS值,TCP可以优化数据传输的效率,避免过大或过小的数据段导致的性能问题。
  • 避免或减少IP分片:IP层在传输数据包时有一个最大传输单元(MTU)的限制。如果TCP数据段的大小超过MTU,IP层就会对其进行分片。分片会增加数据丢失的风险,并可能降低传输效率。因此,通过协商确定一个合适的MSS值,可以确保TCP数据段的大小不会超过MTU,从而避免或减少IP分片的发生。
  • 确保数据传输的可靠性:MSS的确定和使用,是基于TCP协议的可靠性和流量控制机制。TCP协议通过确认、重传、拥塞控制等机制,确保数据的可靠传输。MSS作为TCP协议的一个选项,与这些机制共同工作,为数据传输提供可靠保障。

⽹络层的IP地址路由过程

一个数据包如何跨越网段到达最终目的地

  • 封装数据包:在源主机上,数据包会被封装成IP报文,并添加源IP地址和目标IP地址。
  • 转发到默认网关:如果目标IP地址与源主机不在同一网段,数据包会被发送到默认网关(通常是路由器)。
  • 路由决策与转发:在路由器上,根据路由表进行路由决策,并将数据包转发到下一跳路由器或最终目的地。
  • MAC地址替换:在每个路由器上,数据包的MAC地址会被替换为下一跳路由器的MAC地址,以确保数据包能够正确地传输到下一跳。
  • 逐层解封装:当数据包到达最终目的地时,目标主机会逐层解封装数据包,从数据链路层开始,然后是网络层、传输层和应用层,直到数据到达最终的应用程序。
  • 无匹配的处理:如果在路由表中没有找到匹配的条目,路由器通常会丢弃该数据包。
相关推荐
网络安全-杰克7 分钟前
网络安全概论
网络·web安全·php
不是二师兄的八戒9 分钟前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
小牛itbull9 分钟前
ReactPress vs VuePress vs WordPress
开发语言·javascript·reactpress
怀澈12211 分钟前
高性能服务器模型之Reactor(单线程版本)
linux·服务器·网络·c++
请叫我欧皇i18 分钟前
html本地离线引入vant和vue2(详细步骤)
开发语言·前端·javascript
闲暇部落20 分钟前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
爱编程的小生21 分钟前
Easyexcel(2-文件读取)
java·excel
GIS瞧葩菜29 分钟前
局部修改3dtiles子模型的位置。
开发语言·javascript·ecmascript
chnming198734 分钟前
STL关联式容器之set
开发语言·c++
带多刺的玫瑰38 分钟前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法