1、死也不能忘记的四个层
①数据链路层
实现了网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网、令牌环等)上的传输。主要的协议ARP和RARP
经过数据链路层封装的数据成为帧,有以太网帧、令牌环帧,其中,以太网帧的格式:
MTU最大传输单元,即帧最多能携带多少上层协议数据(比如IP数据报),正因为如此,过长的IP数据报可能需要分片传输。
说明:以太网帧的MTU=1500,可以通过ifconfig、netstat查看,因此它携带的IP数据报的数据部分最多是1480个字节(IP数据报头部占20个字节)
②网络层
主要的协议是IP和ICMP
功能:
路由选择:通信的两台主机不是直接相连的,而是经过多个中间节点(路由器)连接,网络层的任务就是选择这些中间节点,已确定两台主机之间的通信
IP协议是根据数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目标主机,那么IP协议将会为数据包选择合适的下一跳路由器,并将数据包交付给该路由器来转发。多次重复该过程,直到数据包到达目的主机,或者由于发送失败数据包而被丢弃。可以发现,网络层的IP协议使用逐跳的方式确定通信路径。
ICMP协议(因特网控制报文协议)主要用于检测网络连接,分为两种类型:差错报文、查询报文。详细介绍看图示:
③传输层
主要协议:TCP、UDP、SCTP
功能:为两台主机上的应用程序提供端到端(end-to-end)的通信。与网络层的IP协议使用逐跳的通信方式缺人通信路径不同,传输层只关心src和dst,并不关心数据包的中转过程。
④应用层
在用户空间实现,主要协议:telnet、OSPF、DNS、ping程序等
2、TCP/IP工作原理以及流程
①封装
Q1:上层协议是如何使用下层协议提供的服务的呢?—封装
A1:应用程序的数据在发送到物理网络上之前,将沿着协议栈从上向下一次传递,每层协议都将在上层数据的基础上加上自己的头部信息。
TCP–>TCP报文段、UDP–>UDP数据报、IP–>IP数据包、数据链路层–>帧(以太网帧、令牌环帧)
说明:TCP、UDP对数据的封装类似,不同的是,UDP无需为数据保存副本,因为UDP是不可靠的服务,当UDP数据报被成功发送之后,UDP缓冲区中的该数据报就被丢弃了(如果应用程序检测到该数据报未能被接收方正确接收,并打算重发该数据包,则应用程序需要从用户空间将该数据拷贝到UDP内核发送缓冲区中)。
②分用
Q2:当帧在物理网络上传输到目的主机时,将会沿着协议自底向上依次传递,具体执行过程?—分用
A2:各层协议将依次处理帧中本层负责的头部数据,以获取所需要的信息,并最终将处理后的帧交给目标应用程序。
(从下到上)以太网帧的分用过程,图示:
可以看到:
1. IP、ARP、RARP协议都使用帧传输数据,所以帧的头部中以太网帧的类型来区分它们。IP、ARP、RARP对应的类型分别是:0x800、0x806、0x835。
2. ICMP协议、TCP协议、UDP协议都是用IP协议,所以IP数据报的头部采用16位的协议字段来区分它们
3. TCP、UDP则通过16位的端口号字段区分上层应用程序
③对等层通信
在两个端系统的同一层上,双方都有对应的一个或多个协议进行通信
https://blog.csdn.net/weixin_36750623/article/details/83956487