Linux 高性能服务器编程随记

Eddy 2019-12-18 08:44:35

TCP/IP协议族,四层网络协议,上层协议使用下层协议提供的服务。

数据链路层:网络驱动程序

IP地址和MAC地址转换:ARP、RARP

网络层:数据包的选路和转发

传输层:

TCP:提供可靠的、面向连接的、基于流的服务

UDP:提供不可靠的、无连接的、基于数据报的服务

SCTP(流控制传输协议)

应用层:处理应用程序逻辑,用户空间实现,其它层在内核空间实现。


应用层->数据链路层:封装(encapsulation)

数据链路层->应用层:分用(demultiplexing)


ARP协议:

实现任意网络层地址到任意物理地址的转换。

基本原理:主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址。此网络上的其他机器都将收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址。


DNS协议:

递归查询:如果目标DNS服务器无法解析某个主机名,则它将向其它DNS服务器继续执行查询,如此递归至到查询到结果并返回。

迭代查询:如果目标DNS服务器无法解析某个主机名,则它将自身存储的其它DNS服务器的IP返回给客户端供参考。


IP协议详解:

IP层传递给数据链路层的数据可能是一个完整的IP数据报,也可能是一个IP分片,它们统称为IP分组。

IP路由:

路由机制:1、完全匹配IP 2、匹配网络ID 3、默认路由

IP数据报转发


TCP拥塞控制:

SWND(Send Window,发送窗口),发送端向网络一次连续写入的数据量。数据量以TCP报文段数量来衡量。

RWND(Receive Window,接收窗口)

CWND(拥塞窗口),联合RWND来控制SWND的大小。取两者的较小值。CWND的初始值为2-4倍SMSS(TCP报文段数据部分最大长度)。

慢启动:CWND += min(SMSS,N),N表示此次确认中之前未被确认的字节数。发送端每收到一次确认,CWND值按此公式递增。

拥塞避免:CWND达到阈值后进入此阶段。CWND += SMSS * SMSS / CWND

快速重传

快速恢复

收到3个重复的确认报文段时,立即重传丢失的报文段,并按新算法设置CWND。CWND = ssthresh + 3*SMSS

每收到一个重复的确认时,设置 CWND = CWND + SMSS

收到新数据确认时,设置 CWND=ssthresh。进入拥塞避免阶段。

发送端如何判断拥塞?

1、传输超时

2、接收到重复的确认报文

本文来源于 Eddy

免责声明:
1. 本文版权归属原作所有,仅代表作者本人观点,不代表币推儿的观点或立场。
2. 如发现文章、图片等侵权行为,侵权责任将由作者本人承担。