TCP/IP协议族

Posted _Karry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP/IP协议族相关的知识,希望对你有一定的参考价值。

文章目录

TCP/IP协议族体系及主要协议

数据链路层

数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。

数据链路层常用的两个协议是ARP协议(地址解析协议)和RARP协议(逆地址解析协议)。它们实现了IP地址和物理地址(通常是MAC地址)之间的相互转换。

网络层使用IP地址查找主机,而数据链路层使用物理地址查找主机。网络层必须将目标机器的IP地址转换为物理地址,才能享受到数据链路层的服务,这就是ARP的用途。

RARP协议仅用于网络上的无盘工作站,因为缺乏存储设备,无盘工作站无法记住自己的IP地址,它们可以利用网卡上的物理地址向网络管理者查询到自己的IP地址,这就是RARP的用途。

网络层

网络层实现数据包的选路和转发。WAN(广域网)通常使用众多分级的路由器来连接分散的主机或LAN(局域网),因此通信的两台主机一般不直接相连,而是通过多个中间节点连接。网络层的作用就是选择这些中间节点,以确定两台主机间的通信路径。

网络层最核心的协议是IP协议,IP协议根据数据包的目的地址来决定如何投递它,如果数据包不能直接发送给目的主机,那么IP协议就为它寻找下一跳路由器,并把数据包交付给该路由器转发。

网络层另外一个重要的协议是ICMP协议(因特网控制报文协议)。它是IP协议重要的补充,主要用于检测网络连接。

8位类型:用于区分报文类型,分为差错报文和查询报文。差错报文主要用来回应网络错误,比如目标不可达和重定向;查询报文用来查询网络信息,比如ping就是使用ICMP报文查看目标是否可达。
8位代码:进一步细分不同的条件
16位校验和:对整个报文进行循环冗余校验(CRC),以检验报文在传输过程中是否损坏。

传输层

传输层为两台主机提供端到端的通信,只关心通信的起始端和目的端,不在乎数据包的中转过程。

传输层协议主要有三个:TCP、UDP和SCTP协议
TCP协议为应用层提供可靠的、面向连接的和基于流的服务。TCP协议使用超时重传、数据确认、流量控制和拥塞控制等方式保证可靠传输。
使用TCP协议的双方必须先建立TCP连接,并在内核中为该连接维持一些必要的数据结构,比如连接的状态、读写缓冲区和诸多定时器等。当通信结束时,双方必须关闭连接以释放这些内核数据。
TCP协议是基于流的,没有边界(长度)限制,它源源不断从通信的一端流入另一端。

UDP协议实现不可靠传输。

SCTP协议(流控制传输协议)是一种相对较新的传输层协议,为了在因特网上传输电话信号而设计的。

应用层

应用层负责处理应用程序的逻辑。数据链路层、网络层和传输层负责处理网络通信细节,这部分必须既稳定又高效,因此它们都在内核空间中实现。而应用层则在用户空间实现,因为它负责处理众多逻辑,比如文件传输、名称查询和网络管理等。

应用层协议很多,比如:
telnet协议是一种远程登陆协议
OSPF协议(开放最短路径优先)是一种动态路由更新协议,用于路由器间的通信,以告知对方各自的路由信息。
DNS(域名服务)协议提供机器域名到IP地址的转换

应用层可能跳过传输层直接使用网络层提供的服务,比如ping程序和OSPF协议

封装

通过封装实现上层协议使用下层协议

TCP报文段封装过程:

UDP对应用数据的封装与TCP类似,不同的是UDP无须为应用层数据保存副本,它提供的服务是不可靠的。当一个UDP数据报成功发送之后,UDP内核缓冲区中的该数据报就被丢弃。如果应用进程检测到数据报没能正确接受,重发这个数据报,则应用进程需要从用户空间将该数据报拷贝到UDP内核发送缓冲区中。

分用

帧到达目的主机之后,沿着协议自底向上依次传递。各层协议一次处理帧中本层负责的头部数据,以获取所需的信息。
分用是依靠头部信息中的类型字段实现的。

以上是关于TCP/IP协议族的主要内容,如果未能解决你的问题,请参考以下文章

7.9笔记

TCP三次握手原理详解

OSI七层协议和TCP/IP五层协议

OSI模型和TCP/IP协议族

聊聊网络模型及特点

TCP/IP协议族