前言

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 模型,Websocket、DNS、DHCP之前瑞哥也有专门的文章介绍,感兴趣的朋友也可以去历史文章中翻一翻。

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 七层模型的对比进行详细的介绍,相信看完本文,一定会有所收获。

小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。
我有一些面试题、架构、设计类资料可以说是程序员面试必备!所有资料都整理到网盘了,需要的话欢迎下载!私信我回复【07】即可免费获取

\\

原文出处:xie.infoq.cn/article/3a4caa0fced9ee9d78b9b9404

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

  1. 【重难点】【计算机网络 01】OSI 七层模型和 TCP/IP 四层模型、IP 地址分为哪几类、ping 的原理、从浏览器地址栏输入 URL 到显示网页的过程、什么是 socket

    [重难点][计算机网络 01]OSI 七层模型和 TCP/IP 四层模型.IP 地址分为哪几类.ping 的原理.从浏览器地址栏输入 URL 到显示网页的过程.什么是 socket 文章目录 [重难点 ...

  2. OSI七层模型与TCP/IP四层模型

    OSI七层模型与TCP/IP四层模型 OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名"开放式系统互联通信参考模型&q ...

  3. Network 【TCP/IP 四层模型】

    I. 协议 信号的传输总要符合一定的协议(protocol).比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了"敌人入侵"这一抽象信号.这样一个"狼烟= ...

  4. 网络分层模型OSI和TCP/IP四层模型

    网络分层模型OSI和TCP/IP四层模型 网络分层模型OSI和TCP/IP四层模型 OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Op ...

  5. TCP/IP 四层模型

    I. 协议 信号的传输总要符合一定的协议(protocol).比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了"敌人入侵"这一抽象信号.这样一个"狼烟= ...

  6. TCP/IP四层模型与OSI七层模型

    0. 前言 TCP/IP协议族(TCP/IP Protocol Suite),简称TCP/IP. 该协议族的两个核心协议为:TCP(传输控制协议,Transmission Control Protoc ...

  7. 【计算机网络】初步了解TCP/IP四层模型

    ©作者:凡人编程传 ©系列:计算机网络基础 ©说明:以凡人之笔墨,书写未来之大梦 文章目录 ₪前言 ₪网络基础TCP/IP ₪应用层 ₪传输层 ₪网络层 ₪网络接口层 ₪结言 ₪前言 这是这个科目的开 ...

  8. OSI七层模型、TCP/IP四层模型

    1.OSI的基本概念及原则 OSI是Open System Interconnect的缩写,意为开放式系统互联.其各个层次的划分遵循下列原则: (1)同一层中的各网络节点都有相同的层次结构,具有同样的 ...

  9. 计算机网络:浅谈HTTP与TCP/IP四层模型

    计算机网络:浅谈HTTP与TCP/IP四层模型 其实对于我这样的非科班出身来说,理解算法不是最难的.最难的就是计算机网络这种无法一口吃完的内容.因此专门抽空写点这方面的内容.其实本来只是想写一篇HTT ...

  10. TCP/IP 四层模型与OSI模型区别与联系

    1.TCP/IP四层模型: 1.链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序.计算机中对应的网络接口卡 2.网络层(互联网层):处理分组在网络中的活动,比如分组的选路. 3.运输层: ...

最新文章

  1. 我国科学家首次揭示“时空”记忆在猕猴大脑中表征的几何结构
  2. 去掉中文语言下 wget下载提示 英国中部时间 的问题
  3. groupby多个字段性能_MySQL今天我们说下分组(group by)
  4. 【抓包工具】Wireshark(详细介绍与TCP三次握手数据分析)
  5. js的三元表达式用来替换表格中的颜色
  6. 业务单号自动增长的处理办法
  7. Godaddy Windows主机组件支持情况
  8. 2d shader unity 阴影_UNITY崩坏3角色渲染实践
  9. python邮件模块_Python收发邮件模块,用,来,发送,接收
  10. Win7中语音识别功能的详细介绍
  11. 2021安徽高考成绩及录取结婚查询,2020安徽高考录取结果查询时间及通知书发放时间...
  12. java 通过网络 ntp 获取网络时间
  13. UI 设计师不容错过的12款APP UI 交互设计
  14. web开发框架技术有哪些?
  15. 元宇宙持续升温,金蝶推出数字员工破圈而来
  16. 戴尔联想惠普IT服务全方位比拼
  17. codeforces 416C C. Booking System(贪心)
  18. 【基础】什么是网关以及网关作用
  19. 思杰pvs服务器压力无法最大化,XXX学校桌面虚拟化方案重点.docx
  20. Bentley-Ottmann算法:求N条线段的交点

热门文章

  1. 怒肝半月!Python 学习路线+资源大汇总
  2. java毕业设计成都某4S店销售管理系统Mybatis+系统+数据库+调试部署
  3. hahMap的括号中指定了数字表示是什么意思
  4. MA、BMA、PPP网络类型实验
  5. 牛客网力扣算法编程之二十一 | 数组 - 明明的随机数 - Java代码实现
  6. html复选框打钩行变颜色,Excel 单元格打勾会变颜色,开发工具的复选框这样玩...
  7. [学习SLAM]数学中的几何变换-向量叉乘/旋转轴、旋转角度和旋转矩阵/坐标系变换
  8. Cadence导出gds文件
  9. OpenGL ES EAGLContext 和 EGLContext
  10. 分布式架构 网络传输优化