您现在的位置是:首页 >技术教程 >【网络原理】TCP/IP四层模型中的重点网络协议网站首页技术教程

【网络原理】TCP/IP四层模型中的重点网络协议

IUIUStar 2024-07-16 06:01:02
简介【网络原理】TCP/IP四层模型中的重点网络协议

目录

?一、应用层协议

?1、XML协议 

? 2、JSON

? 3、其他协议

?二、传输层协议(UDP与TCP重点)

?1、UDP协议格式

? 2、TCP协议格式

?TCP的10条机制(必会)

1、确认应答机制(可靠机制)

2、超时重传机制(可靠机制)

3、连接管理机制(三次握手,四次挥手)(可靠机制)

4、滑动窗口机制(效率机制)

5、流量控制(可靠机制)

6、拥塞控制 (可靠机制)

7、延迟应答(效率机制)

8、捎带应答(效率机制)

9、面向字节流

10、TCP异常情况

?三、网络层重点协议

?1、IP协议格式​编辑

?2、IP地址:IPv4与IPv6

?3、路由选择 

?四、数据链路层重点协议

?1、以太网格式

?2、MTU(最大传输单元)


?一、应用层协议

        在开发应用程序时,一个很重要的工作就是进行协议的确定。协议就是组织数据的格式。

        确定应用层协议:在前文中我们实现的TCP服务器与客户端,发送双方确定的应用层协议就是以换行符作为每条消息的结尾,双方在发送的时候按照换行符进行编码,接收的时候按照换行符再进行解码。

        实际上,每个程序对协议的数据格式进行自定义,但是如果每个程序都定义的不一样没那么就不太灵活,双方都要按照不太的方式去解析和编码请求和响应内容,于是大佬们对一些常用的应用场景做了一些特殊协议并确定下来,形成了标准常见的应用层协议,HTTP,FTP,XML,JSON...

?1、XML协议 

xml主要是一种组织数据的格式。

? 2、JSON

JSON也是组织数据的一种方式。

? 3、其他协议


?二、传输层协议(UDP与TCP重点)

传输层的协议主要有两个:UDP与TCP

?1、UDP协议格式

在解析UDP数据报文件的时候,先截取16位表示源端口,再截取16位表示目标端口号,再截取16位表示UDP长度...

? 2、TCP协议格式

 TCP对数据传输提供的管控机制,主要体现在两个方面:安全和效率。

?TCP的10条机制(必会)

1、确认应答机制(可靠机制)

(1)分析现象:由于网络错乱导致消息到达的时间不同,会造成消息的乱序。

(2)解决办法:

TCP为了解决收发乱序的问题,对每个字节进行编号。

 

 2、超时重传机制(可靠机制)

原因:消息在网络传输的过程中:操作系统->网卡->交换机->路由器->其他的网络设备,每个设置都有自己的负载能力,如果超出了范围,当前的数据包就可能阻塞或者丢弃。

         不过在情况2中,主机其实已经接收到了数据,只是A没有收到ACK。因此A重发消息,但是存在B会重复接收的一个问题。因此B会在自己的缓冲区中利用32位的序列号过滤到重复数据。 

了解:

 3、连接管理机制(三次握手,四次挥手)(可靠机制)

        主机之间:发送方与接收方之间要进行网络通信,必须要确认双方收发数据的能力。其中涉及到建立连接与断开连接的协商过程。

三次握手:正常通信之前确认双方能力


面试题1: 三次握手的过程? 三次握手的过程能不能简化为两次?四次又是怎么实现的?

 两次不可以的,因为没有完整的校验双方的收发能力;四次是可以的,不过三次就足够了。

参考资料1

参考资料2


三次握手还有一个重要的功能就是协商序列号是从哪里开始。

 四次挥手:断开连接的过程

4、滑动窗口机制(效率机制)

        (1)针对的问题:之前说到确认应答机制,对于每一发送的数据段,都要给一个ACK应答,接收到ACK应答之后再发送下一个数据段。这种数据一发一收的过程虽然可以保证正常通信,但是效率并不高。

        (2)滑动窗口:既然一发一收的性能比较低,那么我们一次发送多条数据,就可以大大提高性能。

 (3)预见可能会遇见的丢包问题

情况1:ACK丢了

情况2:发送的请求包丢包 


问题:滑动窗口与效率大小?

(1)效率的高低与窗口大小有关;

(2)窗口越大效率越高;

(3)窗口越小,效率越低;

(4)假设窗口无穷大,此时发送方就完全不需要等待ACK,此时的效率就和UDP一样,不需要响应就可以直接发送。 

新的问题:滑动窗口的大小到底取多少合适呢?——>因此提出了接下来的 流量控制机制。

5、流量控制(可靠机制)

主要目标:流量控制机制主要是用来确定滑动窗口的大小,通过发送方与接收方动态协商来确认的。

6、拥塞控制 (可靠机制)

解决的问题:

        虽然TCP有了滑动窗口这个大杀器,能够高效可靠的发送大量的数据。但是如果在刚开始阶段就发送大量的数据,仍然可能引发问题。
        因为网络上有很多的计算机,可能当前的网络状态就已经比较拥堵。在不清楚当前网络状态下,贸然发送大量的数据,是很有可能引起雪上加霜的。
        TCP引入 慢启动 机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据;

实际上就是在每次通信过程中试探网络的拥堵状态,从而调整窗口大小。

因此动态调整窗口大小,与接收方的缓冲区大小有关,也与网络大小有关。

问题:窗口大小的取值,以哪个值为准?

(1)接收方缓冲区大小

(2)拥塞控制中跟开网络的状态确定下来的窗口大小

以这两个值中较小的那个为准。

7、延迟应答(效率机制)

8、捎带应答(效率机制)

9、面向字节流

(1)存在的问题:粘包问题

 (2)解决粘包问题

  • 来回往复的读取:长度+消息体
  • 在消息末尾加特殊字符表示消息结束。

10、TCP异常情况


问题1

 问题2


?三、网络层重点协议

?1、IP协议格式

理解16位标识,3位标志字段与13位分片偏移。         

        对于较长的消息,TCP报文中可能无法承载。就将过长的消息分割成很多小消息体。这一整个大的消息用16位标识表示,三位标志字段如果表示的是“更多分片”,就表示若干个小的消息体。假设TCP报文中一次只能承载10M,分成10份,每个小的消息分片只是1M,13位偏移表示小的消息体从哪个位置开始。

  

 ?2、IP地址:IPv4与IPv6

1、IPv4

总长是32位,最多可以表示42亿个地址。

问题1:怎么分配这些IP地址让计算机之间可以相互访问呢?

(1)动态分配

设置上网的时候才获取一个IP(一个IP只能同时表示一台主机),下线的时候就会被收回。

(2)NET机制

一个子网中的所有机器,共用一个公网IP地址(不能重复),子网中的机器分配内网IP(不同子网中是可以重复的)。

 


2、IPv6

IPv6的范围 可以为地球上的每一粒沙子分配一个IP。

?3、路由选择 

 举个例子



?四、数据链路层重点协议

?1、以太网格式

?2、MTU(最大传输单元)

面试题


风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。