计算机网络传输层

Posted:   November 16, 2019

Status:   Completed

Tags :   计算机网络

Categories :  

Were equations, pictures or diagrams not properly rendered, please refresh the page. If the problem persists, you can contact me.

一、传输层提供的服务

  1. 传输层的功能

    1. 它为上面的应用层提供通信服务,属于面向通信部分的最高层,同时也是用户功能上的最低层。

    2. 传输层为两台主机提供了应用进程之间的通信,又称为端到端通信。由于网络层协议是不可靠的,会使分组丢失、失序和重复等,所以派出传输层为数据传输提供可靠的服务。

    3. 某一层是否可靠,确实取决于这一层使用的是什么协议,如果用户选择了TCP,自然传输层就是可靠的,但是,如果用户使用了UDP,传输层就是不可靠的,但是一般默认传输层是可靠的。

    4. 提供应用进程之间的逻辑通信(网络层提供主机之间的逻辑通信)

    5. 差错检测:对收到报文的首部和数据部分进行差错检测(网络层只检查IP数据报首部,不检查数据部分)

    6. 提供无连接或面向连接的服务

    7. 复用和分用:复用指发送方不同的应用进程都可以使用同一个传输层协议传送数据。分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。

    8. 连接管理

    9. 流量控制与拥塞控制

    10. TCP与IP的比较:

      TCP IP
      面向连接服务 无连接服务
      字节流接口 IP数据报接口
      有流量控制 无流量控制
      有拥塞控制 无拥塞控制
      保证可靠性 不保证可靠性
      无丢失 可能丢失
      无重复 可能重复
      按序交付 可能失序
  2. 传输层寻址与端口

    1. 端口的基本概念:数据链路层按MAC地址寻址,网络层按IP地址寻址,而传输层是按端口号寻址。端口就是传输层服务访问点,端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层的相应进程。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与传输实体进行层间交互的一种地址
    2. 端口号:端口号用一个16位端口号进行标识
      1. 熟知端口数值一般为0-1023
      2. 登记端口数值一般为1024-49151
      3. 客户端端口或短暂端口一般为49152-65535
    3. 套接字:一台拥有IP地址的主机可以提供许多服务,这些服务完全可以通过一个IP地址实现;套接字 = (主机IP地址,端口号),它唯一地标识了网络中某台主机上的某个应用进程
  3. 无连接服务与面向连接服务

    1. IP分组要经过互联网中许多路由器的存储转发,但UDP数据报是在传输层的端到端抽象的逻辑信道中传送,UDP数据报只是IP数据报中的数据部分,对路由器是不可见的。
    2. TCP报文段是在传输层抽象的端到端逻辑信道中传送的,对路由器不可见。TCP中所谓的连接只是在TCP的TCB中存储了对端的地址信息,并且记录连接的状态,通过重发之类来保证可靠传输,并没有一套真正的物理连接。

二、UDP

  1. UDP数据报
    1. UDP的基本概念:
      1. 发送数据之前不需要建立连接
      2. UDP的主机不需要维持复杂的连接状态表
      3. UDP用户数据报只有8个字节的首部开销
      4. 网络出现的拥塞不会使源主机的发送效率降低(没有拥塞控制)
      5. UDP支持一对一、一对多、多对一和多对多的交互通信
    2. UDP数据报的组成
      1. 源端口:占2B
      2. 目的端口:占2B
      3. 长度:占2B
      4. 校验和:占2B,用来检测UDP用户数据报在传输中是否有错(既检验首部,又检验数据部分),如果有错,就直接丢弃。若该字段位可选字段,当源主机不想计算校验和时,则直接令该字段全为0.
  2. UDP校验:UDP校验只提供差错检测。在计算校验和时,要在UDP用户数据报之前临时加上12B的伪首部(源IP地址字段、目的IP地址字段、全0字段、协议字段、UDP长度字段)伪首部只用于计算和验证校验和,既不向下传送,也不向上递交。

三、TCP

  1. TCP报文段
    1. 源端口和目的端口:各占2B。
    2. 序号:占4B。尽管从应用层交付下来的时TCP报文段,但是TCP时面向字节流的,所以在一个TCP连接中传送的字节流需要编号,这样才能保证按序交付。
    3. 确认号:占4B
    4. 数据偏移:占4位
    5. 保留字段:占6位
    6. 紧急URG
    7. 确认比特ACK
    8. 推送比特PSH
    9. 复位比特RST
    10. 同步比特SYN
    11. 终止比特FIN
    12. 窗口字段:占2B
    13. 校验和字段:占2B
    14. 紧急指针字段:占2B
    15. 选项字段
    16. 填充字段:为了使整个首部长度是4B的整数倍
  2. TCP连接管理
    1. TCP连接的端点叫做套接字
    2. 建立连接的过程:
      1. 客户机A的TCP向服务器B发出连接请求报文段,其首部中的同步位SYN=1,并选择序号seq=x,表明传送数据时的第一个数据字节的序号是x
      2. 服务器收到了数据报,并从SYN位为1知道这是一个建立连接的请求。如果同意,则发回确认。B在确认报文段中应使SYN=1,ACK=1,其确认号ack= x+1,自己选择的序号seq=y。注意,此时报文段也不能携带数据
      3. A收到此报文段后向B给出确认,其ACK=1,确认后ack=y+1。A的TCP通知上层应用进程,连接已经建立。B的TCP收到主机A的确认后,也通知其上层应用进程,此时TCP连接已经建立,ACK报文可以携带数据,如果不携带数据则不消耗序号
    3. 释放连接的过程:
      1. 数据传输结束后,通信双方都可释放连接。现在A的应用进程先向其TCP连接释放报文段,并停止再发送数据,主动关闭TCP连接。A将连接释放报文段首部的FIN置1,其序号seq=u,等待B的确认。这里要注意,因为TCP是双工的,也就是说,可以想象一对TCP连接上有两条数据通路。当发送FIN报文时,发送FIN的一段不能发送数据,也就是关闭了其中一条数据通路,但是对方还是可以发送数据。
      2. B发出确认,确认号ack=u+1,而这个报文段自己的序号seq=v。TCP服务器进程通知高层应用进程。从A到B这个方向的连接就释放了,TCP连接处于半关闭状态。B若发送数据,则A仍要接收。
      3. 若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接
      4. A收到连接释放报文段后,必须发出确认。在确认报文段中,ACK,确认号ack=w+1,自己的序号seq=u+1
  3. TCP可靠传输
    1. TCP数据编号与确认
    2. TCP的重传机制
  4. TCP流量控制
  5. TCP拥塞控制的基本概念:在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏——产生拥塞
  6. 拥塞控制的4种算法:
    1. 接收端窗口rwnd:接收端根据其目前接收缓存大小所许诺的窗口值。反映了接收端的容量。
    2. 拥塞窗口cwnd:发送端根据自己估计的网络拥塞程度而设置的窗口值,反映了网络的当前容量
    3. 发送窗口的上限值=Min[rwnd,cwnd]

Comments


😅 Commenting is disabled on this post.
You can use extended GitHub flavored markdown in your comment. Commenting FAQs & Guidelines