计算机网络stage2

  • Post author:
  • Post category:其他


继计算机网络stage1



网络是怎样连接的



第二章

  1. Socket 库向协议栈发出委托的一系列操作

  2. 所以只要通过描述符确定了相应的套接字,协议栈就能够获取所有的相关信息,这样一来,应用程序就不需要每次都告诉协议栈应该和谁进行通信了。

  3. 操作系统中有一个“内存管理”模块

  4. 连接实际上是通信双方交换控制信息,在套接字中记录这些必要信息并准备数据收发的一连串操作
    {%}

  5. 论何种操作系统的协议栈都是共通的

  6. TCP 模块会与该 IP 地址对应的对象,也就是与服务器的 TCP 模块交换控制信

    当 TCP 头部创建好之后,接下来 TCP 模块会将信息传递给 IP 模块并委托它进行发送

    建立连接之后,协议栈的连接操作就结束了

  7. 对应英文的 Connection。也有人把连接称为“会话”(session)

  8. 协议栈会根据一个叫作 MTU [①] 的参数来进行判断。MTU 表示一个网络包的最大长度,在以太网中一般是 1500 字节

    MSS:除去头部之后,一个网络包所能容纳的 TCP 数据的最大长度。
    {%}

  9. 为此,协议栈的内部有一个计时器,当经过一定时间之后,就会把网络包发送出去

    |判断要素就是这两个,但它们其实是互相矛盾的。如果长度优先,那么网络的效率会提高,但可能会因为等待填满缓冲区而产生延迟;相反地,如果时间优先,那么延迟时间会变少,但又会降低网络的效率。

  10. 发送缓冲区中的数据会被以 MSS 长度为单位进行拆分

  11. 通过这些信息,接收方还能够检查收到的网络包有没有遗漏。例如,假设上次接收到第 1460 字节,那么接下来如果收到序号为 1461 的包,说明中间没有遗漏

    “到第 ×× 字节之前的数据我已经都收到了哦!”这个返回 ACK 号的操作被称为

    确认响应

    ,通过这样的方式,发送方就能够确认对方到底收到了多少数据。
    {%}

  12. TCP 采用这样的方式确认对方是否收到了数据,在得到对方确认之前,发送过的包都会保存在发送缓冲区中。如果对方没有返回某些包对应的 ACK 号,那么就重新发送这些包。

    因此,网卡、集线器、路由器都没有错误补偿机制,一旦检测到错误就直接丢弃相应的包

  13. 还需要将控制位中的 ACK 比特设为 1,这代表 ACK 号字段有效,接收方也就可以知道这个网络包是用来告知 ACK 号的。

    SYN 是 Synchronize(同步)的缩写,意思是通过告知初始序号使通信双方保持步调一致

    议栈会将接收到的数据复制到应用程序指定的内存地址中



版权声明:本文为FNAspectOL原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。