Linux高性能服务器编程(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxt_1/article/details/89929891

1. 各层主要协议

在这里插入图片描述

应用层负责处理应用程序的逻辑。数据链路层、网络层、传输层负责处理网络通信细节,这部分必须既稳定又高效,因此它们都在内核中实现。
  • 数据链路层

      ARP协议:IP——》MAC
      
      工作原理:主机向自己所在网络广播一个ARP请求,该请求包含目标机器的网络地址,此网络上的其他机器都将收到这个请求,但只有目标机器会回应一个ARP应答,其中包含自己的物理地址。
    
  • 网络层

      IP协议:根据数据包的目的IP地址来决定如何投递
    
      ICMP协议:检测网络连接
       		*回应网络错误,比如目标不可达和重定向
       		*查询网络信息,比如ping程序使用ICMP报文查看目标是否可以到达
    
  • 传输层

      TCP协议:为应用层提供可靠的、面向连接的、基于流的服务(超时重传、数据确认)
      UDP协议:为应用层提供不可靠的、无连接的、基于数据报的服务
    
  • 应用层

      telent协议:远程登入协议
      OSPF协议:动态路由更新协议
      DNS协议:域名——》IP地址,端口53
      HTTP协议:端口80
    

2.IP协议

2.1 IP服务特点

提供无状态、无连接、不可靠的服务。

  • 无状态:接收端无法处理乱序和重复的IP数据报,只要收到了完整的IP数据报,就将其数据部分上角给上层协议
    • 第N个IP数据报比第N+1个IP数据报先到达接收端
    • 同一个IP数据报经过不同路径多次到达接受端

2.2 IP分片

分片可能发生在发送端,也可能发生在中转路由器上,而且可能在传输过程中被多次分片,但只有在最终目标机器上,这些分片才会被内核中的IP模块重新组装。

2.3 IP的路由机制

  1. 查找路由表中和数据报的目标IP地址完全匹配的主机IP地址。如果找到,就使用该路由项,没找到转步骤2
  2. 查找路由表中和数据报的目标IP地址具有相同网络ID的网络IP地址。如果找到,就使用该路由项,没找到转步骤3
  3. 选择默认路由项

route命令修改路由表

3. TCP协议

3.1 TCP服务特点

面向连接:

扫描二维码关注公众号,回复: 6200825 查看本文章
双方必须为连接分配必要的内核资源,完成数据交换后,通信双方都必须断开连接释放系统资源

字节流:

发送端连续发送多次写操作,TCP模块先将数据放入TCP发送缓冲区中,然后将待发送数据封装成一个或多个TCP报文段发出
接受端收到一个或多个TCP报文段,依次放入TCP接受缓冲区中,并通知应用程序读取。应用程序可以一次将TCP接受缓冲区中的数据全部读走,或分多次读。

可靠:

应答机制
超时重传

字节流服务、数据报服务区别

  • 字节流服务:
    • 当发送端应用程序连续执行多次写操作时,TCP模块现将这些数据放入TCP发送缓冲区中。当TCP模块正则开始发送数据时,发送缓冲区中这些等待发送的数据可能被封装为一个或多个TCP报文段发出。
    • 当接受端收到一个或多个TCP报文段后,TCP模块按照TCP报文段的序号依次放入TCP接受缓冲区中,并通知应用程序读取数据。接收端应用程序可以一次性将TCP接受缓冲区中的数据全部读出,也可以分多次读取 ,这取决于用户指定的应用程序读缓冲区的大小。
  • 数据报服务:
    • 发送端应用程序每执行一次写操作,UDP模块就将其封装成一个UDP数据报并发送之。接收端必须及时针对每一个UDP数据报执行读操作,否则就会丢包。如果用户没有指定足够的应用程序缓冲区来读取UDP数据,则UDP数据将被截断。
      在这里插入图片描述
      在这里插入图片描述

3.2 复位报文段(RST)

通知对方关闭连接或重新建立连接,通知窗口大小为0,对方不能回应复位报文段

产生的情形:

  • 客户端访问一个不存在的端口
  • 使用异常终止,给对方发送一个复位报文段,发送端等待发送的数据将全部丢弃
  • 半打开连接:一端关闭连接,但对方没有收到结束报文段,对方还维持着原来的连接,若对方写入数据,则会收到复位报文段。

3.3 Nagle算法

  1. TCP连接的双发在任意时刻都最多只能发送一个未被确认的TCP报文段,在该报文段的确认到达之前不能发送其他报文段。
  2. 发送方在等待确认的同时整合要发送的小数据,在确认到来时以一个TCP报文段发送,减少网络上小数据报文段的数量。
  3. 自适应性:确认到达的越快,数据发送的越快

3.4. 拥塞控制

提高网络利用率、降低丢包率、保证网络资源对每条数据流的公平性。

SWND:发送窗口,限定了发送端能连续发送的TCP报文段数量;太小会引起网络延迟、太大导致网络拥塞
SMSS:发送者最大段大小
CWND:拥塞窗口
RWND:接受通告窗口,接收方发送,告知对方本端接收缓冲区的大小
ssthresh:慢启动门限

在这里插入图片描述
发送窗口的大小=min(CWND,RWND)

发送端判断拥塞发生:

  • 传输超时
  • 连续接收到3个重复的确认报文段

猜你喜欢

转载自blog.csdn.net/zxt_1/article/details/89929891
今日推荐