一.简介:
-
OSI 7层参考模型 与 TCP/IP协议。
7层参考模型只是参考,并没有实现,分层的目的是为了解耦。
TCP/IP协议分为5层--应用层,传输(控制)层,网络层, 链路层+ 物理层。 -
一个网络包的流程:
image.png
image.png
-
用户在浏览器上输入一个URL时,浏览器会解析URL生成一个HTTP请求报文【主要是去定义数据格式,用于规定了每段数据以什么形式表达才是能够被另外一台计算机理解。】;
-
进行域名查询胡哦去目的IP: 将域名发送给DNS服务器来获取目的IP,此时得到了目的IP与端口。
3 委托TCP/IP协议栈发送数据:应用程序(浏览器)通过调用 Socket 库,来委托协议栈工作。协议栈有:负责收发数据的 TCP(负责重传) 和 UDP 协议。控制网络包收发操作 IP 协议(负责发送)。
即:应用层定义数据格式,传输层控制传输方式, 网络层定义传给谁。
4.TCP通过三次握手交换两方各自的初始化seq序列号,确定双方都有收发能力来建立连接,并通过重传机制保证可靠性。同时:TCP需要考虑数据大小,对较大的数据进行分包发送,接收端分包组合。所以一个HTTP连接 需要多个TCP交互去实现(三握包 + 分包的多个数据交互包 + 四挥包)。
- IP发送:TCP 模块在执行连接、收发、断开等各阶段操作时,都需要委托 IP 模块将数据封装成网络包发送给通信对象。 在这一层需要确定原IP,即多个网卡时,需要根据路由表规则,来判断哪一个网卡作为源地址 IP来发送包。
6.两点之间的传输:通过发送arp广播获取目的IP的MAC地址,即吓一跳路由的mac地址。其中原MAC在网卡生产时写入到 ROM 里的,可以直接读取。这样就可以通过MAC地址实现点与点之间的传输。
- 网络包的出口--网卡:网卡通过网卡驱动程序从IP模块获取包后,添加报头与起始帧分界符,,在尾部添加校验序列。最后将包转换成电信号,通过网线发出去。 到目前为止,包刚离开PC。
image.png
image.png
- [二层外设--交换机] 交换机---将网络包原样转发到目的地。
image.png
(1)电信号到达外设交换机网线接口,交换机里的模块进行接收,接下来交换机里的模块将电信号转换为数字信号。
(2)通过包末尾的 FCS 校验错误,如果没问题则放到缓冲区。接下来需要查询一下这个包的接收方 MAC 地址是否已经在 MAC 地址表中有记录。
最后: 交换机根据 在交换机的MAC 地址表查找目的 MAC 地址对应的交换机接口,然后将报文转发送到交换机相应的接口。在这个过程中,MAC与IP都没有发生变化,只是原样转发报文。
image.png
- 通过出境大门路由器: 将报文发送到公网上,然后进行路由转发
思考:为什么在IP层获取的MAC地址是吓一跳路由的MAC地址??为什么有了IP还需要MAC地址??
交换机与路由器都是通过查表来决定包转发的目标,但:交换机是基于以太网设计的,俗称二层网络设备,交换机的端口不具有 MAC 地址。路由器是基于 IP 设计的,俗称三层网络设备,路由器的各个端口都具有 MAC 地址和 IP 地址;
image.png
image.png
在这个过程中,会根据目的IP地址获取吓一跳的MAC地址,即目的MAC;当前路由器发送的端口的MAC作为原MAC,来替换数据包的原MAC 与 MAC进行发送。 而原IP 与目的IP只要不经过NAT地址转换,就不会改变。所以:IP地址用于确认最终的通信的两个主机,端口用于确认两台主机上的特定两个进程,而MAC用于在同一子网内的点对点(子网内两台主机)的通信,只要经过路由器,原MAC与目的MAC都会改变。【所以:原IP-MAC绑定只能用于子网,不能经过路由器】
- 最后: 数据包找到了目的地址,将包发送到对端的网卡上:
image.png
服务器会先扒开数据包的 MAC 头部,查看是否和服务器自己的 MAC 地址符合,符合就将包收起来。
接着继续扒开数据包的 IP 头,发现 IP 地址符合,根据 IP 头中协议项,知道自己上层是 TCP 协议。
于是,扒开 TCP 的头,里面有序列号,需要看一看这个序列包是不是我想要的,如果是就放入缓存中然后返回一个 ACK,如果不是就丢弃。TCP头部里面还有端口号, HTTP 的服务器正在监听这个端口号。于是,服务器自然就知道是 HTTP 进程想要这个包,于是就将包发给 HTTP 进程。
HTTP开始解析报文:
image.png
总:
数据包很庆幸遇到了各路神通广大的大佬,有可靠传输的 TCP、有远程定位功能的 IP、有指明下一站位置的 MAC 等。这些大佬都给数据包前面加上了头部,使得我能在交换机和路由器的转发下,抵达到了目的地
- 同网段 与 不同网段的通信:
image.png
二. 来源于网络:什么是网络
https://www.cnblogs.com/flashsun/p/14266148.html
- 集线器---》交换机----》路由器的过程:
网友评论