链接登录后可见
协议是什么?
通信协议(英语:communication protocol,也称传输协议)在**[电信]([链接登录后可见])领域中指的是:在任何物理介质中允许两个或多个在[链接登录后可见]中的终端之间传播[链接登录后可见]**的系统标准,也是指计算机通信或网络设备的共同语言。
OSI 七层和 TCP/IP 四层的关系?
OSI 引入了服务、接口、协议、分层的概念,TCP/IP 借鉴了 OSI 的这些概念建立 TCP/IP 模型。
OSI 先有模型,后有协议,先有标准,后进行实践;而 TCP/IP 则相反,先有协议和应用再提出了模型,且是参照的 OSI 模型。
OSI 是一种理论下的模型,而 TCP/IP 已被广泛使用,成为网络互联事实上的标准。
TCP:transmission control protocol 传输控制协议
UDP:user data protocol 用户数据报协议
OSI(开放式系统互连)参考模型是由国际标准化组织(ISO)在 1985 年提出的一个网络互连标准框架。
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议 / 网际协议)
是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议,而是指一个由 FTP、SMTP、TCP、UDP、IP 等协议构成的协议簇, 只是因为在 TCP/IP 协议中 TCP 协议和 IP 协议最具代表性,所以被称为 TCP/IP 协议。
它将网络通信的工作分为七个层次。
[链接登录后可见]
以下是这七层的简要介绍:
物理层:负责传输原始的比特流,包括电缆、光纤等物理介质的连接和信号传输。
数据链路层:提供节点间的数据传输和错误检测与纠正功能,常见协议有以太网。
网络层:负责数据包的路由选择和转发,确保数据能够从源地址到达目的地址,常见协议有 IP。
传输层:提供端到端的通信管理,确保数据完整传输,常见协议有 TCP 和 UDP。
会话层:管理和控制应用程序之间的会话,包括建立、管理和终止会话。
表示层:处理数据的格式化、加密和解密,确保不同系统之间的数据能够互相理解。
应用层:提供网络服务和应用程序接口,常见协议有 HTTP、FTP、SMTP 等。
OSI 模型的主要目的是标准化网络通信,确保不同厂商的设备和软件能够互相兼容和通信。它在网络设计和分析中起着重要作用。
虽然某些技术(比如协议)在逻辑上比起其它层来说可能 “属于” 某一层,但并非所有的技术都完全契合 OSI 模型中的单个层。
例如,以太网(Ethernet)、802.11(Wifi)和地址解析协议(ARP,Address Resolution Protocol)程序在不只一层上工作。
OSI 只是一个模型,一个工具,并不是一组规则。
向下的数据包结构
[链接登录后可见]
1. 应用层数据包
[链接登录后可见]
这里是一个 GET 请求报文,请求谷歌的报文结构也是相同的,只是域名等内容不同罢了。我们假定这个部分的长度为 4960 字节,此时的数据包结构如下:
就是一个单纯的数据包,没有头部。
[链接登录后可见]
2. 传输层数据包(TCP/UDP 数据包)
TCP/UDP 数据包需要设置端口,接收方(Google)的 HTTP 端口默认是 80,发送方(本机)的端口是一个随机生成的 1024-65535 之间的整数。
[链接登录后可见]
TCP/UDP 数据包就是在应用层数据包前面加上端口号的等必要的寻址信息作为头部。
3. 网络层数据包(IP 数据包)
到了网络层,TCP 数据包再嵌入 IP 数据包。IP 数据包需要设置双方的 IP 地址,这是已知的,发送方是 192.168.1.100(本机),接收方是 172.194.72.105(Google)。
IP 数据包的标头长度为 20 字节,加上嵌入的 TCP 数据包,总长度变为 5000 字节。
[链接登录后可见]
4. 数据链路层数据包(以太网数据包)
最后,IP 数据包嵌入以太网数据包。以太网数据包需要设置双方的 MAC 地址,发送方为本机的网卡 MAC 地址,接收方为网关 192.168.1.1 的 MAC 地址(通过 ARP 协议得到)。
以太网数据包的数据部分,最大长度为 1500 字节,而现在的 IP 数据包长度为 5000 字节。因此,IP 数据包必须分割成四个包。因为每个包都有自己的 IP 标头(20 字节),所以四个包的 IP 数据包的长度分别为 1500、1500、1500、560。
[链接登录后可见]
分割成四个数据包,分割只能分割数据部分,每个数据包都要具有相同的标头,不然找不到目的地址:
[链接登录后可见]
服务端响应:
经过多个网关的转发,Google 的服务器 172.194.72.105,收到了这四个以太网数据包。
根据 IP 标头的序号,Google 将四个包拼起来,取出完整的 TCP 数据包,然后读出里面的 “HTTP 请求”,接着做出 “HTTP 响应”,再用 TCP 协议发回来。
本机收到 HTTP 响应以后,就可以将网页显示出来,完成一次网络通信。
这个例子就到此为止,虽然经过了简化,但它大致上反映了互联网协议的整个通信过程。
我们再总结一下整个过程中数据包的结构包装变化(图片来源于网络):
[链接登录后可见]
网络通讯协议图下载
[链接登录后可见]
参考文档:
[链接登录后可见]
[链接登录后可见]