目录
🌟一、应用层协议
🌈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(最大传输单元)
面试题