Skip to content

TCP/IP四层网络模型

为什么要有网络模型

进程通信的方式

  • 本机
    • 消息队列
    • 共享内存
    • 管道(程序用来交换数据的地方)
  • 不同主机
    • 网络通信

需要网络通信的设备是多种多样的,所以要兼容,就要设定网络通信之间的网络协议。

应用层

应用层定义了应用进程之间通信和交互的规则,应用层交互数据单元为报文。

不关心数据如何传输,将报文传给传输层做传输。

在这一层有很多熟悉的协议,比如 HTTP、HTTPS、DNS等。

【计算机网络】TCP / IP 四层协议_tcp/ip协议包含哪几层_L Jiawen的博客-CSDN博客

应用层工作在操作系统的用户态,传输层以及以下层工作在内核态。

什么是用户态和内核态?

  • 内核态

    能访问硬件所有资源,进行系统调用。

    一些应用在必须使用系统调用的场景,就要将用户态转为内核态,才能继续操作。比如唤醒线程。

  • 用户态

    应用只能使用用户态,使用自己应用的存储空间。

目的是为了保护内核空间的安全性。

传输层

image.png

传输层接收应用层发来的数据包,传输层能在不同应用之间传输数据。

传输层主要能力就是 应用到应用之间的通信,实际传输数据的能力在下一层,网络层。

传输层有两个非常常用的协议:TCP和UDP。

TCP和UDP的区别

  • 建立连接

    TCP需要三次握手保证服务端的接收和发送的能力。

    UDP不关心,直接发数据包。

  • 可靠性

    数据包太大时,直接传输不好控制。TCP会将数据包分为多个TCP 段。通过按顺序发TCP段,如果出现某个发送失败,会重新发送。

    而UDP是只负责发送数据包,不负责数据包是否到达。

image.png

端口

客户端发包给服务端的时候,服务端可能有很多个应用。

image.png

为了确认包是发给哪个应用的,服务端会使用端口将应用区分开。

而传输层报文中,会有端口信息,服务端能识别出该数据包对应的是哪个端口,进而找到接受数据包的应用。

网络层

比如在两个应用A和B之间,想要通信,就要依赖于传输层的协议。比如TCP,A想和B通信,就要借助TCP协议实现,建联→发数据包→断开连接。传输层能提供应用之间通信的能力,但是发送数据包的能力不会实现,是在下层实现的。

网络层就是负责将数据包从一个设备发到另一个设备。

IP协议

IP协议是网络层常见的协议,将传输层的数据包进行进一步组装。

网络层也具有切分能力,超过一定长度会切分。

image.png

通过IP地址为设备编号,用来区分设备。

IP地址分为两种意义:

  • 网络号

    标识该IP对应的设备在哪个子网下,也就是网段。

    比如:10.10.103.179 网络号是 10.10.103.0

  • 主机号

    标识在同一个子网下的不同主机,也就是主机号。

    比如:10.10.103.179 主机号是 179

通过IP地址找到对应设备

比如IPv4协议的设备 10.10.103.179/24。先通过IP和子网掩码找到网络号,再去找对应的主机。

  • 子网掩码

    /24 → 255.255.255.0

    11111111-11111111-11111111-00000000

  • 网络号(网段)

    IP地址和子网掩码进行按位与

    10.10.103.179 与 255.255.255.0 按位与得到的就是网络号,也就是网段。

    结果是:10.10.103.0

    json
    00001010-00001010-01100111-10110011
    11111111-11111111-11111111-00000000
    
    00001010 00001010 01100111 00000000
    10.10.103.0

    image.png

  • 主机号

    子网掩码取反与IP地址进行按位与,就可以得到主机号。

    255.255.255.0取反与10.10.103.179 按位与。

    最后得出主机号:179

    json
    00001010-00001010-01100111-10110011 ip
    11111111-11111111-11111111-00000000 子网掩码
    	
    00000000-00000000-00000000-11111111 子网掩码取反
    00000000-00000000-00000000-10110011
    0-0-0-179

路由能力

image.png

在多设备复杂的网络情况下,IP地址访问路由器,通过路由去寻找目标地址的子网,然后将数据包发送到对应的网络内。

比如不同子网的机器,通过路由器去找,先找到对应子网,再找主机号,找到对应主机。

网络层IP协议,通过子网掩码找到网段,再找到主机。然后发送网络数据包到该主机。还包括多设备情况的路由能力。

网络接口层

网络接口层为网络层提供链路传输的能力,是基于物理传输层面。

将网络层封装好的数据,传输到目标计算机。

image.png

在网络层报文基础上增加 MAC 头部,来标识以太网(局域网)的设备。

image.png

什么是以太网

以太网是一种局域网,通过交换机、路由器等组成以太网,使同一局域网的机器可以互相通信。

以太网下不能通过IP找到目的地,而是要通过MAC地址进行通信和判断网络包的目的地。

mac地址的作用

  • mac地址是物理属性,与机器绑定。
  • 在局域网情况下,mac地址能帮助路由器识别设备。

image.png

总结

四层网络模型链路

image.png

各层数据格式

image.png