数据包是从上层协议到下层协议进行封装的
以 TCP/IP 为例(从:应用层、传输层、网络层、数据链路层、物理层来进行封装)
应用层:为应用程序提供接口,并且根据不同的应用层协议把数据交给传输层进行封装,并且标识传输层接口
例如:访问网站为例, https:// www.baidu.com
打开 IE 浏览器之后,输入网址,应用程序就会把数据包封装交给 https 来处理
————————————————————————————————————————————————————
传输层:为设备提供端到端的连接,常用有两种传输协议
1、TCP: 头部大小 20 个字节,通过 三次握手、序列号和确认序列号、四次挥手等机制确保可靠性
优点:1、传输数据前,先进行三次握手,确保可靠性
2、传输数据时,根据确认序列号确保数据能准确接收(重传机制保证数据可靠性)
(当确认序列号与发送的数据不相等时,证明数据可能发生丢包,下次发送数据时,则从确认序列号数值开始发送)
3、通过滑动窗口和慢启动机制,控制接收方和发生方的数据流量大小(减少带宽的浪费和数据包重传问题)
缺点:每次收到数据都需要确认,对于时延比较敏感的流量影响较大(如:语音、视频等)
常用于对可靠性要求非常高的网络应用
(例如:Http、Ftp、邮件服务等)
——————————————————————————————————————————
2、UDP:头部大小 8 字节,没有可靠性的机制,没有重传机制,数据包发送和接收顺序由应用层提供(或者应用软件提供)
优点:传输速率更快,相同大小的文件传递,相比于 TCP 每个数据包都能节省 12 个字节
无需进行重传和确认
缺点:面向无连接的传输协议,无法保障可靠性
常用于对时延敏感的业务,并且对可靠性要求不高
(例如:语音电话、视频流量等)
当使用 HTTPS 这个应用时,会交给更为安全可靠的 TCP 处理,并且通过目的端口号 443 来标识这个应用
—————————————————————————————————————————————————————
网络层:为设备提供地址和寻址等功能
传输层封装完成后,还需要有相应的 IP 地址才能进行数据包转发,IP 地址就像地理上不同地点的坐标一样
用来标识网络中的一台设备(通过封装本设备的源 IP 和 目的 IP 标识数据包的收发地址)
目的地址可以从手工输入获取,例如:https:// 192.168.1.1 或者通过 DNS 对域名进行解析获得
—————————————————————————————————————————————————————
数据链路层:根据使用的网络接口,来定义数据链路层封装协议
例如:以太网使用(Enternet II 或 802.3)串行链路/光纤使用(PPP 或 HDLC)
以太网的封装需要有 MAC 地址,PPP 或 HDLC 则不需要封装 MAC
MAC 地址为物理地址,设备网卡在出厂时就带有 MAC 地址,而目的 MAC 地址,则需要通过 ARP 协议获取,或者手工配置
—————————————————————————————————————————————————————
物理层:封装完成的数据包会变根据不同的介质进行传输,例如:比特流、无线信号等