网络杂记
协议:
协议的意思就是字面的意思,指通信双方达成的一种共识
协议就是一种约定,通信双方都认可这样的约定之后,才能进行正确传输
协议往上更进一步就是 标准 (大家都达成的协议)
那么网络中的协议具体有哪些呢,大佬对这些协议分了层
首先为什么要分层,分层带来了什么好处
- 分层能够避免某个协议过于庞大复杂(和写代码是一个道理,如果某个文件太大了,就要拆分多个文件)
- 分层之后,协议之间"解耦合"了,上层协议不需要理解下层协议的细节实现,相当于"封装"
- 分层之后,任何层次的协议,都可以灵活替换.
实际网络通信中的协议很复杂,要分很多层, 主要有两种类型
OSI七层模型
OSI只是教科书上的理论,不是实际情况,因为他太复杂了
TCP/IP五层(或四层)模型
- 应用层:应用程序直接打交道的协议(涉及最多的部分)
- 传输层;负责端到端之间的传输(只需要关注起点和终点)
- 网络层:负责点到点之间的传输(需要规划路径)
- 数据链路层:负责相邻点之间具体如何传输
- 物理层:网络通信的基础设施硬件设施(网线,基站,光纤…纯硬件的,和软件关系不大,所以有时候会忽略物理层,即四层模型),相当于铁路,公路,航道,港口码头
每层的协议都是上层协议调用下层协议,下层协议给上层协议提供服务
而且传输层和网络层都是纯软件的协议,由操作系统内核实现
但是数据链路层和物理层,和系统没有直接关系,而是取决于具体的硬件设备.
????
对于一台主机,他的操作系统内核实现了从传输层到物理层的内容
对于一台路由器,它实现了网络层到物理层;
对于一台交换机,它实现了从数据链路层到物理层.
对于集线器,他只实现了物理层
但这其实也不是真实情况,现在的情况是,现代的交换机和路由器没有本质区别,而且都实现到应用层
网络传输的基本流程:各个层次的协议之间是如何协同工作的
主要是由两个操作:
- 封装:发快递需要打包
- 分用:拆快递.
举个例子,比如我现在要给我弟弟发送一条微信,内容是烧壶开水,那么此时信息的流动过程为:
1.应用层需要根据用户输入的数据,把这个数据构造成一个应用层数据报
这里标注了发送者和接收者以及内容,实际情况会更复杂.
2.应用层协议要把数据交给传输层协议,进一步封装.
封装的意思就是给刚才的数据基础上加上一个传输层的协议报头
3.传输层需要把数据进一步的交给网络层
网络层协议再加一个网络层的协议报头(还是字符串拼接)此时就得到了一个网络层数据报
4.网络层需要把数据交给数据链路层,数据链路层再加上一个数据链路层的协议帧头+帧尾(数据报头)
5.数据链路层得到的数据帧,还要交给物理层,物理层就会把这个数据转换成光点信号,通过硬件设备(网络,光纤…),传递到
暂时不画图
分用:
1.物理层接收到对方发来的光电信号,解析成二进制的bit流,进一步得到了数据链路层的数据帧,把数据帧交给数据链路层来处理
2.数据链路层解析数据帧,剥离帧头和帧尾,取出中的ip数据报,交给网络层
3.网络层拿到刚才的网络层数据报,再来解析,去掉网络层协议数据报头,把数据交给传输层.
4.传输层协议拿到了传输层数据报,再来解析,去掉传输层报头,再把应用层数据报交给应用层.
5.应用层解析应用层数据报,分析出数据内容是啥,发送者是谁,显示到界面中
此时我弟就能看到我发的消息了
刚才这个过程没有考虑到网络传输的一些中间过程~ 只考虑发送和接受了,实际上这个过程要更加复杂