zoukankan      html  css  js  c++  java
  • 【笔记】《计算机网络 自顶向下方法》第三章 运输层

    概述和运输层服务

        运输层解决的问题是,数据传输的问题。数据传输分为不可靠传输和可靠数据传输,分别对应的是UDP协议和TCP协议。  
    
    • 运输层和网络层的关系
      *
      在发送端,运输层将从发送应用程序接收到的报文(应用层报文)转换成报文段,随后将这些报文段传递给网络层,网络层将其封装为网络层分组(即数据报),并向目的地发送;
      • 在接收端,网络层从数据报中提取运输层报文段,并将该报文段上交给运输层,运输层则处理接收到的报文段,使该报文段中的数据为接收应用程序使用;
      • 运输层协议只工作在端系统中
      • 网络层IP协议为不可靠服务,其服务模型是尽力而为交付服务(best-effort delivery service),这意味着它不确保报文段的交付、不保证报文段的按序交付、不保证报文段中数据的完整性。
    • 因特网运输层概述
      • Internet运输层上提供TCP(传输控制协议) 和 UDP(用户数据报协议)两种。
    • 多路复用和多路分解
      • 无连接的多路复用和多路分解
        • 在运输层,无连接的网络传输是通过UDP来实现的,一个UDP套接字是由一个含有目的IP地址和目的端口号的一个二元组来全面标识的。
        • 主机收到UDP段后检查段中的目的端口号,并将UDP段导向绑定在该端口号的Socket,因此如果两个UDP报文段有不同的源IP地址/端口号,却有相同的目的端口号,那么两个报文段将通过相同的目的套接字被定向到相同的目的进程。
      • 面向连接的多路复用与多路分解
        • 在运输层中面向连接的网络传输多使用TCP,而TCP套接字和UDP套接字之间有一个细微的差别,TCP套接字是由一个四元组(源IP地址、源端口号,目的IP地址,目的端口号)来标识的。当一个TCP报文段从网络到达一台主机时,主机会使用全部4个值来将报文段定向,即多路分解到相应的套接字。
        • 与UDP不同的是,两个具有不同源IP或源端口号的到达的TCP报文段将被重定向到两个不同的套接字。
      • Web服务器与TCP
        • 当今的高性能Web服务器通常只使用一个进程,但是为每个新的客户连接创建一个具有新连接套接字的新线程。
    • 无连接运输:UDP
      • UDP报文段结构
      • UDP检验和
        • 作用
          • 提供了差错检查功能
          • 用于确定当UDP报文段从源到达目的地移动时,其中的比特是否发生了变化(例如,可能由于链路中的噪声干扰或者存储在路由器中时引入问题)
        • 原理
          • 反码(complement):发送方的UDP对报文段中的所有16bit字的和进行反码运算,就是将所有的0换成1,所有的1换成0;接收端计算校验和但不做反码,将结果与发送方校验码相加,如果得到的结果为16个1,那么说明该分组中没有引入差错。
          • 回卷(wrap around):遇到最高位进位的时候,就将溢出的那一位与低16位相加。
      • UDP 的几个优点
        • 对于发送什么数据和何时发送数据有更为精细的控制。TCP 因为有拥塞控制使得 TCP 发送速率不能得到保证,而 UDP 没有这种限制
        • 无须事先建立连接。TCP 在发送数据前必须经过 3 次握手,这就引入了非常大的时延
        • 无连接状态。UDP 不需要额外的内存以保存缓存、拥塞控制参数等数据,因此服务器可以有更多的 UDP 连接
        • 分组的首部开销更小。UDP 的首部只有 8 个字节,而 TCP 有 20 个字节。
    • 可靠数据传输原理
      • 构造可靠数据传输协议
        • 经完全可靠信道的可靠数据传输:rdt1.0
        • 经具有比特差错信道的可靠数据传输:rdt2.0
        • 经具有比特差错的丢包信道的可靠数据传输:rdt3.0
        • 流水线可靠数据传输协议
        • 回退N步
        • 选择重传
    • 面向连接的运输:TCP
      • TCP连接建立三次握手:
        • 客户端的TCP会向服务端的TCP发送一个报文,该报文有一个标志位SYN被置为1,客户端还会随机选择一个初始序号client_isn然后发送给服务端TCP
        • 服务端TCP收到客户端的报文后,会为客户端TCP分配缓存和变量,同时也会发送一个报文给客户端,其中有SYN=1,并加clenet_isn+1处理,服务端也会发送一个自己的初始序号server_isn(有一种典型的SYN泛洪攻击就是利用这个一步骤会分配变量和缓存,导致系统崩溃)
        • 客户端收到服务端的报文后,也会为服务端TCP分配缓存和变量,然后再次发送一个报文给服务端TCP,该报文中,将SYN=0,把server_isn+1处理。
      • 关闭TCP连接:
        • 客户端会向 服务端 发送一个报文,该报文中有个标志为FIN=1,服务端收到会发送一个报文给客户端,该报文中也有一个标识位FIN=1;等客户端收到报文后确认了FIN标识位,就是释放。
      • TCP报文段结构
      • 往返时间的估计与超时
      • 可靠数据传输
      • 流量控制
      • TCP连接管理
    • 拥塞控制原理
      • 拥塞原因与代价
      • 拥塞控制方法
      • 网络辅助的拥塞控制例子:ATM ABR拥塞控制
    • TCP拥塞控制
      • 慢启动
      • 拥塞避免
      • 快速恢复
      • TCP拥塞控制:回顾
      • 对TCP吞吐量的宏观描述
      • 经高带宽路径的TCP
  • 相关阅读:
    linux gcc安装
    重装win7后如何恢复ubuntu引导
    Eclipse搭建Android开发环境(安装ADT,Android4.4.2)
    mysql变量使用总结
    最快得到MYSQL两个表的差集
    mysqldb
    更改时间 (时分秒)
    使用命令转移文件
    报喜啦~过了!
    Jmeter接口测试示例
  • 原文地址:https://www.cnblogs.com/everfight/p/computer_network_chapter3.html
Copyright © 2011-2022 走看看