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

目录

TCP/IP协议介绍 

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

 网络协议为什么要分层

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

应⽤层

DNS的作用及原理

DNS工作流程

数据链路层

以太⽹帧格式

MAC地址的作用

ARP协议的作⽤

ARP协议的工作流程

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的简单介绍icon-default.png?t=N7T8https://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地址,以确保数据包能够正确地传输到下一跳。
  • 逐层解封装:当数据包到达最终目的地时,目标主机会逐层解封装数据包,从数据链路层开始,然后是网络层、传输层和应用层,直到数据到达最终的应用程序。
  • 无匹配的处理:如果在路由表中没有找到匹配的条目,路由器通常会丢弃该数据包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/50678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之判断二叉树是否为搜索树(C/C++实现)

文章目录 判断二叉树是否为搜索树方法一:递归法方法二:中序遍历法总结 二叉树是一种非常常见的数据结构,它在计算机科学中有着广泛的应用。二叉搜索树(Binary Search Tree,简称BST)是二叉树的一种特殊形式&…

自动化测试--WebDriver API

1. 元素定位方法 通过 ID 定位:如果元素具有唯一的 ID 属性,可以使用 findElement(By.id("elementId")) 方法来定位元素。通过 Name 定位:使用 findElement(By.name("elementName")) 来查找具有指定名称的元素。通过 Cl…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 5键键盘(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

Linux常用操作

软件安装 CentOS 系统使用: yum [install remove search] [-y] 软件名称 install 安装 remove 卸载 search 搜索 -y ,自动确认 Ubuntu 系统使用 apt [install remove search] [-y] 软件名称 install 安装 remove 卸载 search 搜索 -y…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十六章 自动创建设备节点

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

前端播放rtsp视频流(最后使用WebRtc)

前端播放rtsp视频流(最后使用WebRtc) 前言: ​ 项目需要将实验室里的摄像头画面引入到前端页面中,故对目前常见的几种方法进行了尝试,虽然过程坎坷但结局是好的。 一些尝试: RTSPtoWebRtc工具 由于RTSPt…

opengl 写一个3D立方体——计算机图形学编程 第4章 管理3D图形数据 笔记

计算机图形学编程(使用OpenGL和C) 第4章 管理3D图形数据 笔记 数据处理 想要绘制一个对象,它的顶点数据需要发送给顶点着色器。通常会把顶点数据在C端放入 一个缓冲区,并把这个缓冲区和着色器中声明的顶点属性相关联。 初始化立…

力扣 二分查找

二分查找基础篇。 题目 class Solution {public int searchInsert(int[] nums, int target) {int l 0, r nums.length - 1;while(l < r) {int mid l((r-l)>>1);//(lr)/2if(nums[mid]<target)lmid1;else rmid-1;}return l;//处理边界&#xff0c;设定数组的左半…

21 Python常用内置函数——zip()

zip() 函数用来把多个可迭代对象中的元素压缩到一起&#xff0c;返回一个可迭代的 zip 对象&#xff0c;其中每个元素都是包含原来的多个可迭代对象对应位置上元素的元组&#xff0c;最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个。 可以这样理解这个函…

论文阅读——Design of Environmental backscatter tag antenna for 5G Internet of things

文章目录 摘要一、背景二、系统模型三、天线设计A. 指标B. 天线结构描述C. 天线结构优化D. 天线结构确定 四、仿真结果总结 论文来源&#xff1a;https://ieeexplore.ieee.org/document/9379395 摘要 文章针对传统设备识别在电力物联网场景中存在的可靠性低和读取距离不足的问…

Java智慧养老养老护理帮忙代办陪诊陪护小程序系统源码

&#x1f31f;智慧养老新风尚&#xff0c;护理代办陪诊小程序来帮忙✨ &#x1f3e1;【开篇&#xff1a;关爱老人&#xff0c;从智慧养老开始】&#x1f3e1; 随着社会的进步&#xff0c;智慧养老已成为新时代孝心的体现。面对忙碌的生活节奏&#xff0c;如何更好地照顾家中长…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十九章 等待队列

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

电力系统 | 发电、输电、变电、配电、用电介绍 | 一度电从电厂发出来到用户终端需要经历哪些环节 | 变电站建在哪里

文章目录 一、一度电从电厂发出来到用户终端需要经历哪些环节&#xff1f;二、发电、变电、输电、配售电和用电过程介绍三、变电站建在哪里&#xff1f; 一、一度电从电厂发出来到用户终端需要经历哪些环节&#xff1f; 电力系统是由发电、变电、输电、配售电和用电等环节组成的…

leetcode106. 从中序与后序遍历序列构造二叉树,力扣105姊妹题

leetcode106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…

活动报名小程序

#活动报名工具# # 活动报名小程序 ## 项目简介 一款通用的活动报名工具&#xff0c;包含活动展示&#xff0c;微信支付&#xff0c;订单管理&#xff0c;分享评价等功能。 品客聚精彩&#xff0c;有你才精彩&#xff01;不只有线下活动还可以进行线上裂变活动。 …

UE4-构建光照后导入的静态网格体变黑

当我们将我们的静态网格体导入到项目当中的时候&#xff0c;此时我们进行重新构建光照&#xff0c;我们在从新构建完光照后&#xff0c;会发现我们的静态网格体全部变黑了&#xff0c;此时是因为没有设置光照贴图分辨率和坐标索引引起的。 将General Settings中的L…

Cmake生成的Xcode工程相对路径与绝对路径的问题

Cmake生成的Xcode工程相对路径与绝对路径的问题 文章目录 Cmake生成的Xcode工程相对路径与绝对路径的问题前言修改.pbxproj文件验证工程小结 前言 由于Cmake的跨平台的自动化构建的方便性以及他广泛应用于编译过程的管理&#xff0c;在开发过程中难免用到Cmake。我也使用Cmake…

framework直播学习笔记--安卓如何实现Launcher启动应用全部变自由窗口Freeform模式

背景&#xff1a; 前些天在学员在学员群里有聊到一个需求&#xff0c;那就是把手机桌面点击应用图标后&#xff0c;不是进行全屏显示&#xff0c;而是都进行自由窗口显示。这个其实有点类似我们windows电脑打开app&#xff0c;每个app都是一个非全屏的窗口&#xff0c;而且可以…

从 Batch Norm 到 SGD 隐藏的内容

我们仍然不了解机器学习的哪些方面 欢迎来到雲闪世界。令人惊讶的是&#xff0c;机器学习中的一些基本主题仍然不为研究人员所知&#xff0c;尽管它们很基础且常用&#xff0c;但却似乎很神秘。机器学习的有趣之处在于我们构建了可以工作的东西&#xff0c;然后弄清楚它们为什么…

硅纪元视角 | 摩根大通拥抱AI:LLM Suite开启金融行业新篇章!

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展&#xff0c;捕捉行业动态&#xff1b;提供深入的新闻解读&#xff0c;助您洞悉技术背后的逻辑&#xff1b;汇聚行业专家的见解&#xff0c;…