《Linux高性能服务器编程》笔记1--TCP/IP体系结构
TCP/IP协议族
1. tcp/ip协议族
1.1. TCP/IP协议族体系结构以及主要协议
上层协议使用下层协议提供的服务。
1.1.1. 数据链路层
数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。
两个常用协议:
ARP(Address Resolve Protocol,地址解析协议)和RARP(Reverse Address Resolve Protocol,逆地址解析协议),实现IP地址与机器物理地址(通常是MAC地址)之间的相互转换。
网络层使用IP地址寻址一台机器,而数据链路层使用物理地址寻址一台机器,因此,网络层必须先将目标机器的IP地址转换成其物理地址,才能使用数据链路层提供的服务,这就是ARP协议的作用。RARP仅用于网络上的某些无盘工作站。
1.1.2. 网络层
网络层实现数据包的选路和分发。
WAN(Wide Area Network,广域网),LAN(Local Area Network,局域网).
最核心协议是IP协议。另一个重要协议是ICMP(因特网控制报文协议),是IP协议的重要补充,用于检测网络连接。
1.1.3. 传输层
传输层为两台主机上的应用程序提供端到端的通信,只关心同学呢的起始端和目的端,不在乎数据包的中转过程。
垂直的实线箭头表示TCP/IP协议族各层之间的实体通信(数据包确实是沿这些线路传递的),而水平的虚线箭头表示逻辑通信线路。
传输层协议主要有三个:TCP,UDP,SCTP。
1.1.4. 应用层
应用层负责处理应用程序的逻辑。应用层在用户空间实现,链路层、网络层、传输层在内核空间实现。
如HTTP,FTP,telnet(远程登陆协议),DNS等。
1.2. 封装
应用程序数据在发送到物理网络上之前,将沿着协议栈从上往下一次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时还包括尾部信息),以实现该层的功能,这个过程称为封装。
经过TCP封装后的数据称为TCP报文段,或者简称TCP段。
经过UDP封装后的数据称为UDP数据报。
经过IP封装后的数据称为IP数据报。
经过数据链路层封装的数据称为帧(frame)。帧的最大传输单元(MTU)表示帧最多能携带多少上层协议数据。帧是最终在物理网络上传送的字节序列。
1.3. 分用
当帧到达目的主机时,将沿着协议栈自底向上一次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用。分用是依靠头部信息中的类型字段实现的。