Linux高性能服务器编程-TCP/IP协议族

TCP/IP协议族

最近在学习Linux高性能服务器编程一书,会通过博客的形式来慢慢记录学习过程

​ TCP/IP协议族是一个四层协议,自下而上分别是:数据链路层,网络层,传输层,应用层,每一层通过若干协议完成不同的功能,上层实现下层提供的服务。

数据链路层

​ 数据链路层实现了网卡接口的网络驱动程序来处理数据在物理媒介上的传输,不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供了统一的接口。

​ 数据链路层使用物理地址寻址一台机器,因此使用物理链路层前必须将IP地址转换为物理地址。ARP和RARP是数据链路层常用的两个协议,ARP地址解析协议,ARP能实现任意网络层地址到任意物理地址的转换,例如IP地址到MAC地址的转换,ARP通过向自己所在的局域网广播一个ARP请求,该请求包含目标机器的网络地址,此网络上的其他机器都将收到这个请求,但只有被请求的目标机器会响应一个ARP应答,其中就包含自己的物理地址。如果目标主机不在同一个网段里面,那么一般就会请求默认网关即路由器的MAC地址,通过路由器转发出去。

​ RARP逆地址解析协议,该协议通过物理地址查询自身的IP地址。

网络层

​ 网络层实现数据包的选路和转发,通常通信的两台主机一般不是直接相连的,而是通过许多的中间节点(路由器)转发到达的,网络层的作用就是选择这些中间节点,以确定两台主机之间的通信路径。与此同时。网络层对上层隐藏了网络拓扑连接的细节。

​ 网络层常见的协议是IP协议和ICMP协议,IP协议通过逐跳的方式确定通信路径,IP协议根据数据包的目的IP地址来觉得如何投递它。如果数据包不能直接发送给目标主机,那么IP协议就会为其寻找一个合适的下一跳路由器,并将数据包交付给该路由器来转发。多次重读这一过程,数据包最终到达目标主机,或者由于发送失败而被丢弃(TTL)。

​ ICMP因特网控制报文协议,主要用于检测网络连接,ICMP分为两大类,一类是差错报文,这类报文主要用来回应网络错误,另一类是查询报文,用来查询网络信息,列如ping就是使用ICMP报文查看目标是否可达,ICMP报文使用16位校验和字段对整个报文进行循环冗余校验,以校验报文在传输过程中是否损坏

传输层

​ 传输层为两台主机上的应用程序提供端到端的通信,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程,它为应用程序封装了一条端到端的逻辑通信链路,负责数据的收发以及链路的超时重连。

​ 传输层主要有TCP,UDP两个协议。TCP是基于流的为应用程序提供可靠的,面向连接的服务。TCP基于流的数据没有长度限制,源源不断从一端到另一端,同时在传输前需要先建立起连接,使用了多种手段来确保数据能够正确的发送至目的主机,因此是可靠的。

​ UDP基于数据报为应用程序提供不可靠的,不连接的服务。UDP每个数据报都有一个长度,接收端必须以该长度为最小单位将其所有内容一次性读出,否则数据将被截断。UDP不需要连接就能通信,因此每次发送数据包时都要明确接收端的IP地址。同时UDP不提供可靠的服务,所以其无法保证数据从发送端正确的传送到目的端。

应用层

​ 应用层负责处理应用程序的逻辑,与其他三层不同的是,应用层是在用户空间实现的,而其他三层是在内核空间实现的,TELENT,PING,DNS等都是应用层协议。

封装

​ 上层协议其实是通过封装的方式来使用下层协议提供的服务,应用程序数据在发送到物理网络上之前,将沿着协议栈从上往下依次传递,每层协议都将在上层数据的基础上加上自己的头部信息,有时还会加上尾部信息,以实现该层的功能。

​ TCP封装的数据称为TCP报文段,报文段包括了TCP头部信息和TCP内核缓冲区,也就是应用程序的数据。UDP封装的称为UDP数据报。经过IP封装的称为IP数据报,包括IP数据头和TCP报文段或者UDP数据报。经过数据链路层封装的数据称为帧,传输媒介不同,帧的类型也不同,有以太网帧,令牌环帧等。帧的最大传输单元MTU,即帧最多能携带多少上层协议的数据,不同类型的帧MTU不同,以太网帧的MTU是1500字节,所以过长的数据可能需要被分片传输。

分用

​ 当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序,这个过程就是分用,分用依靠头部信息中的类型字段实现的。以太网帧使用2字节的类型字段来标识上层协议。IP数据报采用16的协议字段来区分是何种协议而TCP报文段等则通过其头部中的16位端口号字段来区分应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lpepsi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值