Linux高性能服务器编程学习笔记——TCP/IP协议族

TCP/IP协议族

TCP/IP协议族体系结构以及主要协议

TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。上层协议使用下层协议提供的服务。
在这里插入图片描述

数据链路层

数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。 不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供一个统一的接口。
数据链路层两个常用的协议是ARP协议RARP协议,它们实现了IP地址和物理地址之间的相互转换
网络层使用IP地址寻址一台机器,而数据链路层使用物理地址寻址一台机器,因此网络层必须先将目标机器的IP地址转化为物理地址,这就是ARP的用途。RARP协议仅用于网络上某些无盘工作站无法记住自己的IP地址,要通过自身的物理地址来查询自身的IP地址。

网络层

WAN通常使用众多分级的路由器来连接分散的主机或LAN。因此两台主机之间要通过多个中间节点(路由器)来连接。网络层的任务就是选择这些中间节点,以确定两台主机之间的通信路径。 网络层隐藏了网络拓扑连接的细节,使得传输层和应用程序看来,通信双方是直接相连的。
网络层的核心是IP协议IP协议根据数据包的目的IP地址来决定如何投递它
网络层另一个重要的协议是ICMP,是IP协议的重要补充,主要用于检测网络连接。一类是差错报文,用来回应网络错误,例如目标不可到达。另一类是查询报文,这类报文用来查询网络信息,例如ping。严格来说ICMP协议不属于网络层协议,因为它使用处于同一层IP协议提供的服务。

传输层

传输层为两台主机上的应用程序提供端到端的通信,负责数据的收发、链路的超时重连等,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程
传输层协议主要有三个:TCP协议、UDP协议和SCTP协议。
TCP协议为应用层提供可靠的、面向连接的基于流的服务。

  1. 可靠的。TCP采用超时重传、数据确认等方式确保数据包被正确的发送至目的端。
  2. 面向连接的。TCP协议通信的双方必须先建立TCP连接,并在内核中维护一些必要的数据结构,比如连接状态、缓冲区、计时器等等。
  3. 基于流的。数据没有边界(长度)限制。发送端可以逐个字节的向数据流中写入数据,接收端也可以逐个字节的将他们读出。

UDP协议则相反,提供不可靠、无连接和基于数据报的服务。

应用层

应用层负责处理应用程序的逻辑。数据链路层、网络层和传输层负责处理网络通信细节,这部分必须即稳定又高效,因此它们都在内核空间中实现。
应用层可能跳过传输层直接使用网络层提供的服务,比如ping程序。

封装

每层协议都在上层数据的基础上加上自己头部信息(有时也有尾部信息),以实现该层的功能,这个过程就称为封装。
在这里插入图片描述

经过TCP封装后的数据称为TCP报文段,或者简称TCP段。
经过IP封装后的数据称为IP数据报。
经过数据链路层封装的数据称为帧。帧的最大传输单元,通常受到网络类型的限制。

分用

当帧到达目的主机时,将沿着协议栈自底而上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用。

ARP协议工作原理

ARP协议能实现任意网络层地址到物理地址的转换。其维护一个ARP高速缓存,其中包含经常访问或最近访问的机器的IP地址到物理地址的映射。这样就避免了重复的ARP请求,提高了发送数据包的速度。

DNS工作原理

DNS是一套分布式的域名服务系统,将机器的域名转换成IP地址

socket和TCP/IP协议族的关系

数据链路层、网络层、传输层协议是在内核中实现的,因此操作系统要实现一组系统调用,使得应用程序能够访问这些协议提供的服务。socket是其中一种API,主要提供两点功能:

  1. 将应用程序数据从应用缓冲区中复制到TCP/UDP内核发送缓冲区,以交付内核来发送数据。或是从内核TCP/UDP接收缓冲区中复制数据到用户缓冲区,以读取数据。
  2. 应用程序可以通过他们来修改内核中各层协议的某些头部信息或其他数据结构,从而精细地控制底层通信行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值