【计网】TCP/IP四层模型(一)

OSI七层模型

OSI(Open Systems Interconnection)七层模型是国际标准化组织(ISO)提出的网络通信框架,用于标准化不同厂商设备之间的通信流程。

  1. 物理层(Physical Layer)​​

    ​​作用​​:传输原始比特流(0和1),定义物理介质(电缆、光纤、无线)的电气、机械特性(如电压、接口形状)。

    ​​关键协议/设备​​:网线、光纤、集线器(Hub)。 ​​通俗比喻​​:相当于"公路"本身,负责车辆(数据)的物理运输。

  2. 数据链路层(Data Link Layer)​​ ​​作用​​: 将比特流组织成​​帧(Frame)​​,进行差错检测(如CRC校验)。

    通过MAC地址实现同一局域网内设备的直接通信(如交换机转发)。

    ​​关键协议/设备​​:以太网(Ethernet)、MAC地址、交换机(Switch)。

    ​​通俗比喻​​:像"邮递员",在同一个社区(局域网)内根据门牌号(MAC地址)精准投递信件(数据帧)。

  3. 网络层(Network Layer)​​

    ​​作用​​:

    通过​​IP地址​​实现不同网络间的路由选择(如路由器跨网转发)。

    解决拥塞控制、分组拆分与重组。

    ​​关键协议/设备​​:IP协议、路由器(Router)、ICMP(Ping)。

    ​​通俗比喻​​:像"GPS导航系统",规划跨城市(跨网络)的最佳路径(路由),确保包裹(IP数据包)到达目标城市。

  4. 传输层(Transport Layer)​​ ​​作用​​:

    提供端到端(应用程序到应用程序)的可靠传输(如TCP)或高效传输(如UDP)。

    通过​​端口号​​区分不同服务(如80端口对应HTTP)。 ​​关键协议​​:TCP(可靠传输)、UDP(快速传输)。

    ​​通俗比喻​​:像"快递公司",TCP是顺丰(保证包裹不丢失),UDP是普通邮政(可能丢件但速度快)。

  5. 会话层(Session Layer)​​ ​​作用​​: 建立、管理、终止应用程序之间的会话(如断点续传、身份验证)。

    解决"谁可以通信"和"如何同步通信"问题。 ​​关键协议​​:RPC(远程过程调用)、SSH会话。

    ​​通俗比喻​​:像"电话秘书",负责拨通电话(建立会话)并在通话结束后挂断(终止会话)。

  6. 表示层(Presentation Layer)​​ ​​作用​​: 数据格式转换(如加密/解密、压缩/解压、字符编码转换)。

    确保发送方和接收方"说同一种语言"。 ​​关键协议​​:SSL/TLS(加密)、JPEG/MPEG(多媒体编码)。

    ​​通俗比喻​​:像"翻译官",将中文(发送方数据格式)翻译成英文(接收方可读格式)。

  7. 应用层(Application Layer)​​ ​​作用​​:直接面向用户提供网络服务(如网页浏览、邮件发送)。

    ​​关键协议​​:HTTP(网页)、FTP(文件传输)、SMTP(邮件)。

    ​​通俗比喻​​:像"手机APP",用户直接操作微信(应用层)发送消息,无需关心底层如何传输。

TCP/IP四层(或五层)模型

OSI七层模型理论完整,但在实际中并未被完全采用,而是将其简化为了TCP/IP四层模型,降低了复杂性,减少了冗余,应用更为广泛。

TCP/IP四层模型:

  • 网络接口层(物理+数据链路)
  • 网络层(IP)
  • 传输层(TCP/UDP)
  • 应用层(会话+表示+应用)
    TCP/IP五层模型:
  • 物理层(硬件)
  • 数据链路层(mac)
  • 网络层(IP)
  • 传输层(TCP/UDP)
  • 应用层(会话+表示+应用)


为什么要有TCP/IP协议

TCP/IP协议是互联网的基础通信协议,它的存在解决了​​不同设备、不同网络之间的互联互通问题​​。

  • 在早期互联网中,计算机是由不同厂商各种使用自己的通信协议来进行通信,不同计算机之间不能实现互联互通,而TCP/IP定义了一套完整的通信协议,就想你和朋友之间有一个暗号一样,就算没有互相看见彼此,也能通过暗号识别出对方,而TCP/IP也是这样,定义了一套完整的通信协议,屏蔽了底层差异,只要能够支持TCP/IP的计算机就能够进行通信。
  • 随着两台主机之间距离变远,如何保证数据传输过程不会发生丢失,如何保证数据准确传输到对方主机上,如何保证对方主机能够识别出我发送的消息等一系列问题出现,为了解决这些问题,就出现了TCP/IP协议,所以协议本质上是一种解决问题的方案。

网络传输基本流程

局域网通信

为了实现两台主机在同一个局域网之间能够通信,那就要保证,主机之间的唯一性,而 MAC地址 就是用来标识主机之间唯一性的。

MAC地址
  • MAC用来识别数据链路层中相连的节点
  • 长度为 48 位,一般用16进制加上冒号的形式来标识,(例如:08:00:27:03:fb:19),在电脑上命令窗口输入 ipconfig /all就可以查看到自己主机的MAC地址
  • MAC地址在网卡出厂时候就已经设定,不能修改,通常是唯一的(虚拟机中的MAC地址是虚拟的MAC地址,可能会冲突,有些网卡也支持用户自定义MAC地址)。
局域网通信
早期局域网通信过程
  • 在以太网中,同一时刻只允许一台机器向网络中发送消息
  • 如果有多台主机同时发送消息,就会发生数据碰撞
  • 所有发送数据的主机都需要进行碰撞检测和碰撞避免
  • 没有交换机的情况下,一个以太网就是一个碰撞域
  • 早期局域网通信,没有交换机的情况下,主机发送消息给其他主机是通过广播的形式发送的,每台主机都能收到消息
  • 主机确认收到的是否是发给自己的是通过确认目标MAC地址是否是自己
现代局域网通信
  • 现代局域网通信每台主机独立交换机端口,相当于每台主机都有一个专用的电话线,不会发送消息碰撞。
局域网通信过程(图解)

当我们发送你好的时候,需要经过TCP/IP四层模型,每经过一层都需要进行封装报头,在传输给另一台主机的时候,另一台主机就需要对封装的报文进行解包和分用,传输给上层

报文
  • 报头对应协议层的结构体字段
  • 除去报头,剩下的就叫做有效载荷
  • 报文 = 报头 + 有效载荷
数据包封装过程

当数据从应用层向下传递时,每一层都会添加自己的头部(Header),形成新的数据单元:

  • 应用层:生成原始数据(如HTTP请求)。
  • 传输层:添加 TCP/UDP头 → 形成段(Segment)或数据报(Datagram)。
  • 网络层:添加 IP头 → 形成 数据包(Packet)。
  • 数据链路层:添加 MAC头 + CRC校验 → 形成 帧(Frame)。
  • 物理层:转换为 比特流(Bit Stream) 发送到网络。

不同协议层对数据包有不同的称呼:

  • 物理层:比特流
  • 数据链路层: 帧(Frame)
  • 网络层:数据包(Packet) 或 IP数据报(IP Datagram)
  • 传输层:TCP(段(Segment))和 UDP(数据报(Datagram))
  • 应用层:消息(Message) 或 数据流(Data Stream)
数据分用的过程

跨局域网传输(广域网传输)

IP地址

IP地址有两个版本IPV4和IPV6

IPv4 vs IPv6 特性对比

特性 IPv4 IPv6
地址长度 32位(4字节) 128位(16字节)
表示形式 点分十进制(如 192.168.1.1 冒号分十六进制(如 2001:0db8:85a3::8a2e:0370:7334
地址总数 约43亿(2³²) 约3.4×10³⁸(2¹²⁸)
分块大小 每段8位(0-255) 每段16位(0-FFFF)
地址类型 单播、组播、广播 单播、组播、任播(取消广播)
报文头大小 20-60字节(可变) 固定40字节
NAT 必需(地址不足) 可选(地址充足)

关键区别说明

  1. 地址空间

    • IPv4仅支持约43亿地址,早已耗尽(依赖NAT缓解)
    • IPv6地址数量足够为地球每粒沙子分配一个IP
  2. 地址表示

    • IPv4使用点分十进制(4段,每段0-255)
    • IPv6使用冒号分十六进制(8段,每段0-FFFF),支持压缩写法(::替换连续全零段)
  3. 性能优化

    • IPv6固定40字节报文头,去除了校验和等字段
    • 取消广播,改进组播和任播支持
    • 原生支持移动IP和QoS标记
网络通信过程(图解)


网络通信过程中IP地址和MAC地址区别:

  • 源IP地址和目的IP地址在整个通信过程中一直不变。
  • 源MAC地址和目的MAC地址在整个通信过程中一直变。
  • MAC地址用于局域网中通信,IP地址用于广域网中通信
端口号

端口号是传输层协议的内容

  • 端口号是一个2字节16位的整数
  • 端口号用来标识主机上的唯一进程
  • IP地址 + 端口 用来标识唯一主机上的唯一进程
  • 一个端口号只能被一个进程占用
端口号范围
  • 0 - 1023: 知名端口号, HTTP(80), FTP(20和21), SSH(22) 等这些广为使用的应用层协议, 他们的
    端口号都是固定的
  • 1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作
    系统从这个范围分配的
    (一个进程可以绑定多个端口号,但一个端口号只能被一个进程绑定)
端口号和进程ID

标识唯一进程可以用进程的pid来标识,这里为什么还要用到端口号呢,那是为了解耦,防止网络编程和系统进程管理强耦合。

相关推荐
O。o.尊都假都8 小时前
UDP协议
linux·服务器·网络·网络协议·udp
2501_916013748 小时前
从一次被抄袭经历谈起:iOS App 安全保护实战
websocket·网络协议·tcp/ip·http·网络安全·https·udp
yangpipi-9 小时前
10.王道_HTTP
网络协议·http·ios
无锡耐特森9 小时前
ProfiNet与CANopen:新能源时代的“语言翻译官”
网络·网络协议
网安小张10 小时前
IP SSL证书常见问题助您快速实现HTTPS加密
tcp/ip·https·ssl
搬码临时工10 小时前
如何通过外网访问内网?对比5个简单的局域网让互联网连接方案
服务器·网络·智能路由器·内网穿透·外网访问
鸡哥爱技术11 小时前
网工实验——OSPF配置
网络·智能路由器
搬码临时工12 小时前
如何设置内网映射端口到外网访问?哪些软件可以进行端口映射?
服务器·网络·智能路由器·访问公司内网
00后程序员张13 小时前
做 iOS 调试时,我尝试了 5 款抓包工具
websocket·网络协议·tcp/ip·http·网络安全·https·udp