与OSI七层模型的对应关系
OSI七层模型由下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
TCP/IP四层模型由下到上分别是数据链路层、网络层、传输层和应用层。
两者的对应关系是:
OSI七层模型的 物理层&数据链路层 -> TCP/IP四层模型的 链路层
网络层 -> 网络层
传输层 -> 传输层
会话层&表示层&应用层 -> 应用层
常见协议
链路层:ARP、RARP等
网络层:IP、ICMP等
传输层:TCP、UDP等
应用层:HTTP、HTTPS、FTP、SMTP等
职责概述
应用层:负责不同应用程序间的通信和数据交换,比如通过浏览器向A公司的服务器发送获取网页的请求,该服务器会将结果回传给浏览器(浏览器与Web服务器的Apache/Nginx);除此之外,还为用户提供访问网络服务的接口,比如浏览器的搜索框、书签、历史记录等;约定发送方和接收方的数据格式,使得不同的系统能够以相同的格式发送和接收数据;定义了应用服务协议,如HTTP、HTTPS、FTP、SMTP等。
传输层:主要负责管理端到端之间的连接和数据传输,比如通过浏览器发起HTTP请求时,会对请求的内容进行分割避免一次性发送过多的数据,并为每个数据段的内容标上序号,以确保接收方能够根据序号重组数据;然后通过三次握手机制,与服务器建立TCP连接,浏览器发起的请求和服务器的响应结果会在该通道上进行传输;为了防止发送方发送数据过快导致接收方无法处理,TCP还会进行流量控制;服务器接收到数据后会数据进行校验,如果发现数据有误还会要求重传该数据段。
网络层:确保数据包能够从源主机发送到目标主机,该过程涉及路由转发、IP寻址、数据分段和重组以及网络诊断等。假设源主机(IP地址为192.168.1.100)需要发送一个较大的文件给目标主机(IP地址为203.0.113.6),该文件超过了数据链路层的最大传输单元(MTU,由网络链路的物理/协议特性决定,通常是固定值,但有些设备可以由管理员自行设定优化),数据会先在源主机被分割成若干段,每一段都包含部分数据,以及源IP地址和目标IP地址等必要信息(如果在传输的过程中,即在中间路由器发现当前转发的数据段超过了某个网络的MTU,也会对数据进行分割发送);第一个路由器会查看数据包的目标IP地址203.0.113.6,然后查看路由表找到最佳路径,决定应该包数据包发送给哪个路由器;如果没有找到则检查是否有默认路由,如果没有会发送一个ICMP“目标不可达”给源主机,告知其目标不可达。当这些数据包到达目标主机后,会根据编号将数据段重组恢复原样。
链路层:数据包在这一层会被封装成数据帧再进行传输。数据帧的头部和尾部包含源/目标主机的MAC地址(MAC地址与IP地址不同,这个是厂商出厂网卡的时候就已经写好的物理地址,可用于网络中唯一标识该主机),以及错误校验码(数据发送端会先计算好错误检测码添加到数据帧的尾部,当接收方接收到数据的时候会重新进行计算并匹配,若不匹配说明数据在发送的过程中出现了错误)等,然后传输数据帧,这个过程中为了防止发送的数据过多过快导致接收端来不及处理,还会进行流量控制(常见的方法有滑动窗口协议、流量控制信号如XON/XOFF)等。