TCP/IP协议分层模型

image.png
image.png

硬件(物理层)

定义一直不统一, 可以理解为是电话线, 以太网

网络接口层

设备驱动, 网卡

网络层(互联网层)

互联网层使用IP协议, 一般是由操作系统提供, 特别是路由器, 用来转发分组数据包
ICMP: IP数据包发送数据失败, 需要给发送端一个异常通知, 需要该协议
ARP: 从分组的数据包中, 解析出物理地址(MAC地址)

传输层

让主机的不同应用程序之间通讯, 不同程序有不同的端口号
TCP: 有连接的传输层协议
UDP:无连接的传输层协议

应用层

WWW: 浏览器与服务端HTTP
SMTP:电子邮件协议
FTP:文件传输协议, 建立2个TCP连接
SSH TELNET:远程登录协议


TCP/IP的包

数据包

image.png
每层都会在发送数据附加一个首部, 首部包含该层需要信息, 如目标地址协议相关信息
在下一层看, 上一层所有包均为本层数据
包首部就是协议的规范

分层中的单位

  • 包: 每一层全部数据
  • 帧: 数据链路层的中包的单位
  • 数据报: 是IP和UDP网络层以上分层中包的单位
  • 段: TCP数据流中的信息
  • 消息: 应用层中数据单位

    经过数据链路的包

    数据链路层会用MAC地址
    网络层会用IP
    传输层会用端口号
    同时每一层都还有一个识别位, 用来标识上一层的协议种类信息
    image.png

TCP/IP分层通讯示列

邮箱发送各层处理图示

image.png

发送端

1. 应用程序处理

应用程序处理编码, 比如使用UTF-8, 点击发送后进入下一层(传输层).

2. TCP模块处理

TCP模块根据应用指示(应用程序调取操作系统API), 负责创建连接, 发送数据, 断开连接
TCP会在应用层添加首部

  • 源端口号, 目标端口号: 用以识别对端主机上的应用
  • 序号: 用于发送包是哪部分数据
  • 校验和: 用以判断数据是否损坏

然后发送给下一层(网络层)

3. IP模块处理

添加上IP首部, 包含当前IP和对端IP, 然后根据IP地址, 会在路由器中, 根据路由算法进行数据接力
如果不知道MAC地址, 可以通过ARP(Address Resolution Protocol)查找
把IP, MAC传递给下一层(数据链路层), 由以太网进行驱动程序进行数据传输

4. 网络接口(以太网驱动)

以太网首部包含发送端MAC和接收端MAC地址, 开始在物理层进行二进制物理传输.

接受端

1. 网络接口(以太网驱动)

  • 判断MAC地址, 是不是给自己的, 不是就抛弃
  • 如果是, 就判断是不是IP协议, 不是就给其他协议处理如ARP, 如果无法识别, 就抛弃

    2.IP模块处理

  • 判断是不是自己的IP, 不是就抛弃

  • 判断是TCP还是UDP
  • 有路由器情况下, 如果不是自己IP, 会转发数据

    3. TCP处理

  • 校验和, 看数据是否损坏

  • 确认端口号, 给负责的应用
  • 收到数据会给发送端一个回掉, 确保数据收到, 否则发送端会一直重复发送

    4. 应用程序处理

  • 查看是否有该邮箱, 如果没有, 返回给发送端一个无此邮箱的异常错误, 如果邮箱满, 也会返回邮箱满的错误

  • 接收解析邮件格式