目录
什么是TCP/IP
协议分层的好处
如何分层
进行网络传输
封装
分用
中间的过程
TCP/IP五层网络模型是当下最广泛使用的网络模型,而OSI七层网络模型是仅存在于教科书上的
为何需要ICP/IP五层网络模型:
在网络通信中的环境其实是非常复杂的,面对复杂的环境,就需要复杂协议;
于是就把协议拆分成了多个协议,针对这些小的协议进行分类;
同时针对这些不同的类别进行分层:
相当于约定了层级和层级之间的调用关系,要求上层协议调用下层协议,下层协议给上层协议提供支持,不能跨层调用
这里的协议分成了两层:
后续就可以比较容易得针对这里的某一层协议进行替换
我们在语言层将汉语替换成英语后对通信设备层没有任何的影响,同样在通信设备层将电话机替换成无线电后对语言层也没有任何的影响
1.分层后就可以做到层次之间耦合程度比较低;
上层协议不必了解下层的细节,下层也不必了解上层的细节
2.方便的对某一层的协议进行替换
以下内容就是计算机网络中最基础,最核心的内容:
这里我们可以将之比喻成网购:
应用层:你在淘宝买了一跟铅笔,关注的是送过来后是不是一只铅笔
传输层:是不是从卖家手里最终运到我手里
网络层:从长沙买的快递,到武汉,有很多路径,选择一条最合适的
数据链路层:两个相邻地址之间的传输
长沙->重庆 火车
重庆->武汉 货车
物理层:铁轨,高速公路等
我们在工作时主要关系的是应用层;
传输层是要被应用层调用的,所以我们对传输层也要有一定的理解
在协议分层的背景下,数据如何进行网络传输?
封装&分用
发送方发送数据,要把数据从上到下,依次交给对应的层次协议,进行封装;
接收方收到数据,要把数据从下到上,依次交给对应的层次协议,进行解析.
以QQ发送消息为例,大概说一下,封装分用的过程.
发送方: 我在编辑框给对象输入一个消息: 今晚吃什么
1.应用层(QQ应用程序)拿到上述用户数据,进行封装,封装成应用层数据报
2.传输层拿到上述数据
应用层要调用传输层提供的api,来处理这个数据,然后传递给传输层
传输层有很多协议,最典型的是TCP和UDP
此处以UDP为例
UDP针对上述数据报再进行封装:
一个典型的数据包都是通过报头+载荷的方式构成的
此处,UDP协议再给应用层数据报加个UDP报头,就是为了贴一层标签,从而在标签上填写必要的属性.
传输层协议,最关键的属性就是源端口和目的端口了
3.传输层到网络层:
接下来就是传输层把这个数据报交给网络层的协议
网络层最常见的协议就是IP协议
上述UDP数据报,到达网络层,还需要进一步的封装,添加上IP协议的报头
加上一个IP协议报头,整个UDP数据报作为载荷
源IP和目的IP就是起点和终点了
4.网络层交给数据链路层
最典型的协议,叫做以太网(数据链路层+物理层)
以太网:
最常见的数据链路层的网络.
我们平时使用网线上网,就是在用以太网(以太网线)
mac地址,也叫做物理地址,也是描述一个主机在网络上的位置
它的功能和IP很相似,但是当下就把这两个地址分别作用于不同的用途
IP用来进行网络层的路径规划
mac用来描述数据链路层,两个即将传输的相邻节点
5.数据链路层就要把上述以太网数据帧交给物理层了
上述的数据报其实是段0101的二进制数据
物理层将其转换成光信号/电信号/电磁波信号进行传输
接受过程和上述过程刚好相反:
发送,从上到下,依次封装,新增报头
接受,从下到上,依次分用,去掉报头
忽略中间的过程,只考虑最后对象电脑收到消息的情况:
1.物理层:
收到高低电平这样的电信号;
物理层对这里的信号解析,还原成0101这样的二进制序列
2.从物理层交给数据链路层
此时就把上述的0101这系列数据根据以太网协议做成一个以太网数据帧. 然后去掉报头,交给网络层
3.网络层
此时就由网络层的IP协议进行解析数据报,就是去掉报头,同时做一些工作
最重要的还是取出载荷,交给更上层的传输层协议
4.传输层
由UDP解析处理,还是去掉报头,取出载荷,把数据交给应用层
借助端口号来区别具体的应用程序;
每个接受网络数据的程序都要关联上一个端口号
5.应用层
由QQ程序,进行解析应用层数据报
取出下列字段,放到程序的界面中
最后对象QQ里和我的聊天框中就会显示:
晚上吃什么
发送方,层层包装,相当于包装快递
接收方,层层分用,相当于拆快递
但在真实的网络环境中,不是直接就由我的电脑就能传送到我对象的电脑
中间要经历很多的节点进行转发
这里的节点一般就是指交换机和路由器:
交换机:
进行分用的时候,只是从物理层分用的数据链路层,知道当前数据报的目的mac对不对就行了
然后交换机再针对这个数据报重新封装,从数据链路层封装到物理层,继续转发
(重新封装后源mac地址和目的mac地址就变了)
路由器:
路由器则是从物理层分用到网络层,根据当前得到的目的IP进行下一阶段的寻路操作
(IP地址是一边传输的过程中,一边路径规划的)
然后再把数据报重新从网络层封装到物理层
(此时进过数据链路层的时候,也会调整mac地址)
直到到达目标主机,才会完整的进行从物理层到应用层分用的过程