写点什么

互联网基石:TCP/IP 四层模型,由浅入深直击原理!

作者:wljslmz
  • 2022 年 7 月 29 日
  • 本文字数:5441 字

    阅读完需:约 18 分钟

互联网基石:TCP/IP四层模型,由浅入深直击原理!

你好,这里是网络技术联盟站。


前段时间给大家分享了OSI七层模型,那么与之对应的 TCP/IP 模型肯定也要提上日程。


OSI 模型旨在通过将通信过程划分为更小和更简单的组件来描述通信系统的功能,TCP/IP 模型是 OSI 模型的简明版本,与 OSI 七层模型不同,TCP/IP 模型只有四层。


那么 TCP/IP 四层模型工作原理、工作过程是什么样子的?四层模型中每一层分别是什么样子的?它与 OSI 七层模型有什么区别?今天瑞哥就带着大家好好学习一下“互联网的基石”——TCP/IP。


让我们直接开始!

前言

TCP/IP 是迄今为止最常用的网络互联协议套件,在全球互联网运营方面发挥了巨大作用,可以这样说 TCP/IP 在互联网世界无处不在!


TCP/IP 最初由 DARPA(美国国防高级研究计划局)的两位科学家于 1970 年代开发,这两位科学家分为是 Vint Cerf 和 Bob Kahn,被称为 Internet 之父



当时 NCP 是 ARPAnet 使用的主要传输协议,也就是当今 Internet 的前身,Vint 和 Bob 根据 NCP 的缺点吸取了很多经验教训,TCP/IP 带来的改进非常显着,在 1983 年 TCP/IP 取代了 NCP,成为 ARPAnet 的标准协议。



TCP/IP 在 ARPAnet 成立后,当时加州大学伯克利分校正在开发一个项目,一群科学家正在研究新版本的 Unix 操作系统,即也就是后来的 BSD。1989 年,BSD 开发人员选择 TCP/IP 作为协议栈与其他系统进行通信。


后来他们开发的操作系统在其他大学和机构中非常流行,TCP/IP 也渐渐变得流行起来,此后不久,美国联邦政府也开始测试 TCP/IP 的可用性,这进一步巩固了它在互联网世界中的地位。

什么是 TCP/IP?

TCP/IP 看包含两个部分:


  • TCP

  • IP


TCP/IP 实际包括几十个 Internet 协议,但只有少数是核心协议,其中有两个通常被认为是最重要的,就是我们上面提到的 TCP 和 IP。



IP 属于 OSI 网络层(第三层),在互联网网络中提供寻址、数据报路由等功能;TCP 属于 OSI 传输层(第四层),负责设备上软件进程之间的连接建立和管理以及可靠的数据传输。


由于这两个协议非常重要,所以将这些协议集统称为“TCP/IP”,TCP/IP 的许多最关键的功能都是在第三层和第四层实现的,但是 TCP/IP 不仅仅是 TCP 和 IP,TCP/IP 是一个整体,需要许多不同协议和技术的协同工作,才能构成一个功能性网络,进而正确地为用户提供他们需要的应用程序。

TCP/IP 四层模型?

TCP/IP 包含四层模型,分别是:



下面我们来分别介绍一下每一层。

1、网络接口层

网络接口层是 TCP/IP 四层模型中的第一层,是 OSI 参考模型中定义的物理层数据链路层的组合,这一层主要涉及计算机连接互联网的基础设施,比如以太网电缆、无线网络、网络接口卡、计算机中的设备驱动程序等等。


网络接口层还负责同一网络上两个设备之间的数据传输,例如将数字数据转换为可传输信号。


网络接口层还有一个就是将 IP 数据报封装成网络传输的帧,并将 IP 地址映射到物理地址。


网络接口层涉及协议

网络接口层主要涉及以下协议:


  • 802.3(以太网)

  • 802.11(Wi-Fi)

  • PPP:点对点协议,提供成帧以及许多提高安全性和性能的附加功能。

  • 令牌环

  • FDDI

  • X.25

  • 帧中继

  • SLIP:串行链路 Internet 协议,提供基本的 IP 帧。

网络接口层工作流程

网络接口层其实可以细分为三层:



  • 逻辑链路控制,英文缩写 LLC,负责处理网络层使用的协议的信息,LLC 在接收端帮助决定将数据包传递到目标网络层的相应协议。

  • MAC 层将源 MAC 地址和目标 MAC 地址添加到数据帧中。

  • 物理层将数据帧转换为可以通过网络传输的格式。


比如在有线环境下,物理层会将数据帧转换为电信号,在通信的另一方,将电信号转换回数据帧,从数据包中删除标头,然后将数据包重新组合成完整的数据。

2、网络层

网络接口层是 TCP/IP 四层模型的第二层,又称为互联网层,该层控制流量的流动和路由、寻址,确保数据快速准确地发送,还负责在其目的地重新组装数据包。


  • 寻址:为了与其他主机通信,网络上的每个主机都有一个唯一的标识符,使用这个标识符将数据发送到网络上的特定计算机。唯一标识符有两种类型:逻辑地址物理地址。网路层提供的是一个逻辑地址,即 IP 地址

  • 路由:将数据包从源移动到目的地的方法,一般运行在路由器上或者支持路由的交换机上,网络设备上运行的算法可以为数据包的传递找到最佳最短的路径。


网络层涉及协议

网络层涉及的协议主要有:


  • IP

  • ARP

  • ICMP


其中最核心的是 IP 协议,我们放到本节最后讲,先来看下 ARP:


ARP


我们常说的 ARP 解析就是这个 ARP,ARP 的英文全称是Address Resolution Protocol,中文意思就是地址解析协议,用于识别 MAC 地址,如果设备知道目标设备的 IP 地址,则 ARP 向局域网中的所有设备发送请求,来搜索具有给定 IP 的设备的 MAC 地址,然后具有该 IP 的设备会发送一个带有其 MAC 地址的 ARP 响应。


在 Windows 或 macOS 中,可以在终端中输入命令arp -a查询 ARP 表:



ICMP


ICMP 英文全称Internet Control Message Protocol,中文意思就是互联网控制消息协议,用于报告主机之间通信错误,比如用的最多的就是 ping,ping 可以检查主机之间是否存在连接,检查丢失的数据包数量和传输延迟。


比如我们现在想测试一下我的电脑是否能连接到www.wljslmz.cn,可以使用命令:


ping www.wljslmz.cn
复制代码



从截图中我们清晰的看到我向www.wljslmz.cn发送了四个包,接收到四个包,没有丢失任何包,且还能看到每个包的时间,还帮忙统计出最短耗时、最长耗时、平均耗时。


IP


IP 是非常重要的协议,英文全称Internet protocol,中文意思就是互联网协议


IP 协议有两个版本:


  • IPv4

  • IPv6


IPv4 使用更广泛,但只有 32 位用于寻址,大约有 43 亿(约 4.3×10 9)个可用地址,但不幸的是,在 2019 年 11 月 25 日这一天,根据欧洲区域互联网注册机构 RIPE 说法,IPv4 地址已经全部分配完。


40 多亿个 IP 地址中,有 15 多亿个是分配给美国,是所有国家中数量最多的,每 1000 人大约有 4911 个 IP 地址,这些约占 IP 地址总数的 35.9%。


中国的 IP 地址数量位居第二,为 3 亿多个,约占 IP 地址总数的 7.7%,中国人口比美国多得多了,人均 IP 地址数非常少。


后面第三名、第四名、第五名分别是:


  • 日本,拥有 2 亿多个

  • 英国,拥有 1 亿 2 千多万个

  • 德国,拥有 1 亿 1 千多万个


IPv6 目前渐渐流行起来,1995 年 12 月,IETF 发布了 RFC 1883,即 IPv6 规范,它一共有 128 位地址,这个数目简直就是太庞大了,2^128 个,IPv4 是 2^32 个,这个已经是 43 亿了,2^128 个什么概念,不是有句笑话形容 IPv6 的地址数目的嘛,说给地球上每一粒沙子都分配一个 IPv6 的地址都分配不完,可想而知 IPv6 提供的地址数有多大。



有人问了,那 IPv6 实际上总地址数有多大呢,我通过程序去计算的,因为计算器没办法算,准确的数字是340,282,366,920,938,463,463,374,607,431,768,211,456,人类已经无法去描述这个庞大的数字了。


根据谷歌统计网站统计,截止 2022 年 7 月 25 日,IPv6 的使用率已经达到了 37.78%,这个数字虽然比 2022 年 6 月份 40%几略微有点下降,不过统计图的总体趋势是上升的。


3、传输层

传输层是 TCP/IP 四层模型的第三层,又称为运输层,与 OSI 模型中传输层具有相似的功能和特性,主要负责数据在网络中传输时的可靠性、流量控制和校正。就跟发送一个有保险的包裹一样:传输层将数据分成数据包,确认它从发送者收到的数据包,并确保接收者确认它收到的数据包。


传输层涉及协议

传输层主要就涉及两种协议,可谓是家喻户晓:


  • TCP

  • UDP


TCP


TCP 英文全称:Transmission Control Protocol,中文意思:传输控制协议,用于在 IP 之上确保数据包的可靠传输,是一种面向连接的协议。


在发送端,TCP 将整个消息分成更小的单元,称为,每个段包含一个序列号,该序列号是重新排序帧以形成原始消息所需的。


在接收端,TCP 收集所有段并根据序列号对它们重新排序。


TCP 连接就是用传输中的三次握手进行连接的,三次握手之前瑞哥也有详细讲过,感兴趣的朋友可以去历史文章中翻一翻。


TCP 三次握手简单来说就三步:



  • 第一步:客户端向服务端发送 TCP SYN 序列号启动连接

  • 第二步:服务端向客户端发送 TCP ACK 确认号(客户端的 SYN 值加 1)和自己的序列号 SYN 回应

  • 第三步:客户端向服务端发送 ACK 确认号(服务端的 SYN 值加 1)回应。


至此 TCP 就建立好了连接。


UDP


UDP 英文全称:User Datagram Protocol,中文意思:用户数据报协议,是一种面向无连接的、不可靠的协议。


UDP 没有握手过程,源 UDP 只是将每个数据报交给网络层的 IP,然后继续创建下一个数据报,目的 UDP 端口监听传入的数据报并将数据传递给应用层,UDP 无法恢复丢失的数据报。



TCP 和 UDP 区别


  1. TCP 面向连接,UDP 面向无连接

  2. UDP 比 TCP ,因为 UDP 不对数据包进行排序或错误检查。

  3. TCP 比 UDP 更可靠,TCP 提供错误检查并确保数据包以正确的顺序传送到通信应用程序。

  4. TCP 比 UDP 稍微安全一些,因为 TCP 会跟踪所有数据包,因此更难插入恶意数据。

4、应用层

应用层是 TCP/IP 四层模型的第四层,TCP/IP 中的应用层对应 OSI 模型中的会话层、表示层、应用层,即应用层 = 会话层 + 表示层 + 应用层


应用层主要提供用户和应用程序之间的接口。


应用层涉及协议

应用层涉及的协议很多,常见的比如:


  • HTTP/HTTPS:超文本传输协议

  • FTP:文件传输协议

  • SMTP:简单邮件传输协议

  • WS/WSS:Websocket

  • SSH:安全外壳

  • SNMP:简单网络管理协议

  • DNS:域名系统

  • DHCP:动态主机配置协议


很多很多,这里列举的只是我们经常遇到的。


下面我们稍微介绍一下这几个应用层的协议,这里我不做细节上的梳理,毕竟本文的重点事介绍 TCP/IP 模型,WebsocketDNSDHCP之前瑞哥也有专门的文章介绍,感兴趣的朋友也可以去历史文章中翻一翻。


HTTP/HTTPS


  • HTTP 英文全称:Hypertext Transfer Protocol,中文名称:超文本传输协议

  • HTTPS 英文全称:Hyper Text Transfer Protocol Secure,中文名称:安全超文本传输协议


HTTP 提供了 Web 服务器和客户端(浏览器)之间的标准通信规则,使用的默认端口号为 80


HTTPS 是 HTTP 的安全版,使用 SSL 加密整个通信信息,使用的默认端口号为 443



FTP


FTP 英文全称:File Transfer Protocol,中文意思:文件传输协议,用于计算机之间传输文件,FTP 是客户端-服务器协议,客户端会请求文件,本服务器会响应文件。


  • 控制连接使用端口 21

  • 传输数据使用端口 20



SMTP


SMTP 英文全称:Simple Mail Transfer Protocol,中文意思:简单邮件传输协议,主要用于将电子邮件从电子邮件客户端发送到电子邮件服务器,以及将邮件消息从一个邮件服务器转发到另一个邮件服务器。



WS/WSS


  • WS 英文全称:WebSocket

  • WSS 英文全称:WebSocket Security


WS/WSS 和 HTTP/HTTPS 很类似,一个是不安全的,一个是安全的,但是 WS 和 HTTP 本身是两个不同协议。


WebSocket 用于 Web 浏览器和服务器之间建立持久、双向、全双工 TCP 连接。


与 TCP 不同的是 WebSocket 握手后,通信通道将一直保持打开状态,可以进行连续的通信,服务器可以独立地向客户端发送数据,而无需客户端请求,如果服务器有新信息,也可以主动发送给客户端,而不需要客户端的任何特定请求,这就是 WebSocket 的强大之处。


WSS 和 HTTPS 类似,是一种安全的 WebSocket 技术,信息都是经过加密的。



SSH


SSH 英文全称:Secure Shell Protocol,中文意思:安全外壳协议,是一种远程管理协议,允许用户通过 Internet 访问、控制和修改远程服务器。


SSH 服务是作为未加密 Telnet 的安全替代品而创建的,它使用加密技术来确保进出远程服务器的所有通信都以加密方式进行。



SNMP


SNMP 英文全称:Simple Network Monitoring Protocol,中文名称:简单网络管理协议,是一组用于网络管理和监控的协议。


SNMP 一共三个版本:


  • SNMPv1

  • SNMPv2

  • SNMPv3



DNS


DNS 英文全称:Domain Name System,中文名称:域名系统


计算机通过使用 IP 地址相互通信,IP 地址是一串数字,不太好记忆,DNS 的作用就是将这些 IP 地址转换为容易记忆的域名。



DHCP


DHCP 英文全称:Dynamic Host Control Protocol,中文名称:动态主机控制协议,是一种为网络设备自动提供 IP 地址的服务。


没有 DHCP 前,IP 地址都是静态配置的,但是静态配置的方式不适用大型网络,假如有 1 万台、10 万台设备,还是一台一台设备配置的话非常低效且容易发生错误,那么 DHCP 就是解决了这个痛点。



如图,DHCP 过程一般分为四个过程:


  • Discover:客户端使用 UDP 端口 67 发送一个 Discover 广播消息,尝试联系网络上可用的任何 DHCP 服务器。

  • Offer:服务器使用 UDP 端口 68 响应 Offer 广播消息。

  • Request:当客户端选择了某个 IP 配置时,它会向 DHCP 服务器发送一个 Request 消息,通知指定的 IP 地址已经被选择。

  • Acknowledgment:服务器最后响应一个 Acknowledgment 消息,并将网络参数发送给客户端。


以上就是 TCP/IP 四层模型每一层的详细介绍,瑞哥这里用这一张图来概括一下:



这张图大家可以收藏一下,非常形象,从下往上分别是:


  1. 网络接口层

  2. 网络层

  3. 传输层

  4. 应用层

TCP/IP 模型和 OSI 模型对比

在上一小节,我们也多少提到 TCP/IP 模型中网络接口层相当于是 OSI 的物理层、数据链路层的集合,应用层相当于 OSI 的应用层、表示层、会话层的集合,我们同样用一张图形象的表示一下:


总结

正如文章开头所说的那样,TCP/IP 是互联网的基石,没有 TCP/IP 就没有我们现在庞大的互联网,在没有阅读本文之前,您可能觉得 TCP/IP 这么熟悉、这么简单的概念用得着花一篇长文来讲吗,看了本文我觉得,一篇文章都不够,一本书都能去讲,因为 TCP/IP 四层模型每一层涉及到的协议就非常多,我们还只是介绍了 10 几个比较常见的协议,真正意义上,TCP/IP 模型就包含几十个协议。


本文花了 5000 来字从 TCP/IP 诞生的背景、原理、模型、每一层的含义、涉及的协议、以及和 OSI 七层模型的对比进行详细的介绍,相信看完本文,一定会有所收获。


最后感谢您的阅读,如果觉得文章对您有帮助,别忘了点赞👍、收藏⭐哦!有任何问题,欢迎在下方评论区与我讨论!!!

发布于: 2022 年 07 月 29 日阅读数: 185
用户头像

wljslmz

关注

极致主义者,追求技术的路上,勇往直前! 2021.05.24 加入

公众号:网络技术联盟站 👍InfoQ签约作者 👍阿里云社区签约作者 👍华为云 云享专家 👍BOSS直聘 创作王者 👍腾讯课堂创作领航员 博客+论坛:https://www.wljslmz.cn 工程师导航:https://www.wljslmz.com

评论 (8 条评论)

发布
用户头像
文章倒数第二张图画的真好,我感觉我就把这张图记住就万事大吉了,请问是用什么软件画的?
2022 年 07 月 29 日 22:27
回复
用的presson在线画的,原本可以画的更好看的,presson不支持3D,不过已经够用了
2022 年 07 月 29 日 22:29
回复
用户头像
看作者提到了UDP,翻了翻您的历史文章记录,好像没有UDP的文章,能否出一篇,我们现在有些即时通信需要用到UDP,看网上写的都不全,或者都是转载的,我看了作者许多文章,讲的真不错。
2022 年 07 月 29 日 22:24
回复
UDP可以的,回头我安排一篇,谢谢认可
2022 年 07 月 29 日 22:44
回复
用户头像
这是我看过对TCP/IP模型讲解最细的文章,5000多字,大佬大佬
2022 年 07 月 29 日 22:15
回复
谢谢
2022 年 07 月 30 日 09:16
回复
用户头像
问作者一个问题:TCP/IP模型为啥要对OSI七层模型中的部分层进行合并?
2022 年 07 月 29 日 22:15
回复
你好,这个问题很难回答,不过要明确的是OSI七层模型是面向理论的,是一个非常官方的国际标准,一般用于理论研究,但是它在实际使用中是有些冗余的,所以TCP/IP模型使用率比较高。

在这里要矫正的是不能说“TCP/IP中的某些层是合并OSI七层模型来的”,实际上,TCP/IP诞生的时间要早于OSI模型的,文章中提到TCP/IP模型是1970年代开发的,其实准确的说是1969年已经提出这个模型了,而OSI七层模型于1983年由ISO(国际标准化组织)正式提出。

希望该回答能帮助到你。
展开
2022 年 07 月 30 日 09:16
回复
没有更多了
互联网基石:TCP/IP四层模型,由浅入深直击原理!_计算机网络_wljslmz_InfoQ写作社区