文章目录
- 一个理念
- 五层参考模型
- 思考一个问题
- 通过五层参考模型来解释
- 应用层
- 传输控制层
- 网络层
- 数据链路层
- 物理层
- 灵魂图解
一个理念
- 计算机网络符合工程学设计,层与层之间是垂直调用。
五层参考模型
- 应用层:HTTP、FTP等
- 传输控制层:TCP、UDP
- 网络层:IP
- 数据链路层:ARP
- 物理层
思考一个问题
- 我用微信给朋友发了一条消息,请问消息是怎么发送过去的,都走了哪些路?
通过五层参考模型来解释
应用层
- 微信等运行在操作系统之上的应用,处于应用层,应用层之间要进行数据传输,会唤醒传输控制层:“哥们,我要发条消息,帮我建立一个连接。”数据用http协议打包好,交给传输控制层。
- 打包要发送的数据本身。
传输控制层
- 传输控制层无条件答应“好嘞,没问题。”,然后找向服务器,说“我要传输数据,要建立网络连接”(即发送了一个syn过去),服务器收到了,回了一句“收到你的请求了,可以连接”(即发送syn+ack给客户端),客户端收到服务器的响应,还得再做出回应“好嘞。”(即发送ack给服务端)
- 这就是TCP的三次握手。为什么要三次呢?因为要确保每一方都有发送和响应,来保证连接的可靠。
- 连接可靠了,接下来服务端和客户端都会进行资源开辟,开始数据传输。
- 应用层玩微信那哥们聊完了,要关闭对话框了,意味着本次数据传输结束了。此时,客户端给服务器说“我完事了,可以关闭连接了”(即发送FIN),服务器听到后,先回个“收到”(即发送FIN+ACK),再回头看看自己这还有没有没传完的数据,确认也发完了,回客户端“我也没啥要传了,挂了吧”(即发送FIN),客户端回“好嘞,拜拜。”(即发送ACK)。
- 这就是四次分手。
- 传输控制层负责传输通道的开启和关闭,这也就是为什么要叫“控制”。
- 抓包看一下:
网络层
- 传输控制层确认了能传,把数据扔给了网络层,网络层一看,我就明确一个事:这数据是谁发的,要发给谁?
- 网络层通过IP协议,会给每个联网的设备分配IP(一个完整的地址包含:IP,子网掩码,网关,DNS),IP与子网掩码的计算,能够得出每台主机的网络号和主机号。
- 这下就简单了,网络层就是在数据包上贴上了寄件人和收件人的地址,然后交给数据链路层去传输。
- 网络层负责寻址。明确发送人和接收人。
数据链路层
- 数据有了,地址有了,我知道这个东西要发给谁了,那么问题来了,我该咋发过去呢?
- 这就引出来了数据链路层,数据链路层通过ARP协议,获取每个设备独一无二的MAC地址(硬件地址)。
- 数据链路层加工数据包,贴上所在网络的路由器MAC地址,数据包根据MAC地址走到路由器,路由器先把包上的MAC地址撕毁,然后路把收件人的IP与自己的路由表一核对,发现不在自己的局域网,再在数据包上贴上与自己相连的下一个更广的路由器的MAC,把包发过去。。。。一直跳一直跳,直到跳到接收人所在局域网的路由器,路由器会撕毁包上自己的MAC,贴上接收主机的MAC,数据包就这样发送过去了,接收人就收到了。
- 数据链路层负责一跳一跳的中转。数据包里存放着下一个节点的指针(MAC),像链表一样,所以称作数据链路层。
- 抓个包看一下:
物理层
- 数据包咋能一跳一跳地去到下个地方呢?通过物理层,通过实体的传输介质来传输。
- 物理层负责数据的比特传输。
灵魂图解
一条消息的网络漂流到此结束。