TCP/IP网络模型有几层?
先说结论:一共四层
- 应用层
- 传输层
- 网络层
- 网络接口层
应用层:直接面向用户的应用程序,提供各种网络服务
- 工作在操作系统中的
用户态 - 常见协议:
- Http/Https:用于Web浏览器与服务器之间的通信
- FTP:文件传输协议
- DNS:域名系统,用于将域名转化为IP地址
- Telnet:远程登录协议
- SMTP、POP3、IMAP:电子邮件传输协议
传输层:是为应用层提供网络支持的
- 应用层的数据包会传给传输层
- 传输层以下都工作在操作系统中的
内核态
在传输层有两个协议,分别是
TCP和UDP
TCP(Transmission Control Protocol):传输控制协议
- 是一种
面向连接的协议 - 大部分应用都是使用TCP协议,因为TCP比UDP多了很多特性
- 如:Http协议
UDP(User Datagram Protocol): 用户数据报协议
- 是一种
无连接的的协议- 它不预先建立连接,直接发送数据包到目标地址
- 但是实时性相对更好,传输效率也高
应用需要传输的效率可能会非常大,如果直接传输不好控制,因此当传输层的数据包大小超过 MSS(TCP最大报文段长度),就要将数据包分块,这样即使中途有一个分块丢失或损坏了,只需要重新发送这一个分块,而不用重新发送整个数据包
在TCP协议中,我们把每个分块称为一个TCP段(TCP Segment)
当设备作为接收方,传输层则负责把数据包传给应用,但在一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口
比如说:
- 80 端口通常是 Web 服务器用的
- 22 端口通常是远程登录服务器用的
而对于浏览器(客户端)中的每个标签栏都是一个独立的进程,操作系统会为这些进程分配临时的端口号
由于传输层的报文会携带端口号,因此接收方可以识别出该报文是发送给那个应用的
网络层:负责将一个设备传输到另一个设备
最常用的是IP协议(Internet Protocol)
- IP 协议会将传输层的报文作为数据部分,再加上 IP 包头组装成 IP 报文
- 如果 IP 报文大小超过 MTU(以太网中一般为 1500 字节)就会再次进行分片,得到一个即将发送到网络的 IP 报文
我们一般用 IP 地址给设备进行编号,对于 IPv4 协议, IP 地址共 32 位,分成了四段
- 比如:192.168.100.1,每段是8位
网络接口层:主要为网络层提供链路级别传输的服务
- 负责在以太网、WiFi 这样的底层网络上发送原始数据包
- 工作在网卡这个层次,使用 MAC 地址来标识网络上的设备
在IP头部的前面加上MAC头部,并封装成数据帧(Data frame),发送到网络上
以太网在判断网络包目的地时,和 IP 的方式不同,因此必须采用相匹配的方式,才能在以太网中将包发往目的地。 而 MAC 头部就是干这个用的,所以,在以太网进行通讯要用到 MAC 地址
MAC 头部是以太网使用的头部,它包含了接收方和发送方的 MAC 地址等信息,我们可以通过 ARP 协议获取对方的 MAC 地址
总结:
- 网络接口层的传输单位是帧(Frame)
- IP层的传输单位是包(Packet)
- TCP层的传输单位是段(Segment)
- HTTP层的传输单位则是消息或报文(message)