《计算机网络》学习总结(3)

  这次写计算机网络中的运输层,大名鼎鼎的TCP和UDP就在这一层中!运输层位于应用层和网络层之间,是分层的网络体系结构的重要部分。

运输层

  一.运输层的相关概述
  
  1.运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能,也就是说应用进程使用运输层提供的逻辑功能彼此发送报文,而无需考虑承载这些报文的物理基础。对比于网络层:网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。
  2.运输层协议是在端系统中实现的,而不是路由器中。而路由器仅作用于数据报的网络层字段,即它们不检查封装在数据报的运输层报文段的字段。在端系统中,运输层协议将来自应用进程的报文移动到网络边缘(即网络层),反过来也是一样,但对有关这些报文在网络核心如何移动并不作任何规定。
  3.计算机网络中可以安排多种运输协议,每种协议为应用程序提供不同的服务模型。
  4.运输协议能够提供的服务常常受制于底层网络层协议的服务模型。如果网络层协议无法为主机之间发送的运输层报文段提供时延或带宽保证的话,运输层协议也就无法为进程之间发送的应用程序报文提供时延或带宽保证。
  5.但是,即使底层网络协议不能在网络层提供相应的服务,运输层协议也能提供某些服务:
    (1)底层网络协议是不可靠的,但是运输层也能为应用层提供可靠的数据传输服务。
    (2)即使网络层不能保证运输层报文段的机密性,运输协议也能使用加密来确保应用程序报文不被入侵者读取。
  6.两种可用的运输层协议:TCP和UDP
    (1)UDP(用户数据报协议):它为调用它的应用程序提供了一种不可靠、无连接的服务。
    (2)TCP(传输控制协议):它为调用它的应用程序提供了一种可靠的、面向连接的服务。
  应用程序的开发人员在生成套接字时必须指定是选择TCP还是UDP。
  7.网络层的协议叫IP协议(网际协议)IP为主机之间提供了逻辑通信,IP的服务模型是“尽力而为交付服务”,也就是不能做任何确保,所以IP属于不可靠服务。
  8.TCP和UDP的最基本责任是:将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务。将主机间的交付扩展为进程间的交付被称为运输层的多路复用(transport-layer multiplexing)与多路分解(demultiplexing)
  9.TCP和UDP可以通过在其报文段手部中包括差错检查字段而提供完整性检查。
  10.进程到进程间的数据交付和差错检查是两种最低限度的运输层服务,也是UDP所能提供的仅有的两种服务。而TCP则能提供可靠数据传输以及拥塞控制,而UDP的流量是不可调节的,使用UDP传输的应用程序可以根据其需要以任意速率发送数据。

  二.多路复用与多路分解
   1.多路复用与多路分解,也就是将由网络层提供的主机到主机交付服务延伸到为运行在主机上的应用程序提供进程到进程的交付服务。需要强调的是,多路复用与多路分解服务是所有计算机网络都需要的。
   2.多路分解:将运输层报文段中的数据交付到正确的套接字的工作称为多路分解。在主机上的每个套接字能够分配一个端口号,当报文到大主机时,运输层检查报文段中的目的端口号,并将其定位到相应的套接字。
   多路复用:在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用。
   3.多路复用的要求:
     (1)套接字有唯一标识符
     (2)每个报文段有特殊字段来指示该报文段所要交付到的套接字。
   4.端口号:是一个16位的数,大小在0~65535之间。其中0~102的端口号是周知端口号,是受限制的,也就是给应用层的比如HTTP(80)这些周知协议应用的。
   5.一个UDP套接字是由一个二元组(目的IP地址、目的端口号)全面标识的。也就是说如果两个UDP报文段有不同的源IP地址和/或源目的端口号,但是具有相同的目的IP地址和目的端口号,那么这两个报文段将通过相同的目的套接字被定向到相同的目的地。
   TCP则是由一个四元组(源IP地址、源端口号、目的IP地址、目的端口号)来标识的。很明显和UDP不同。
   这里写图片描述
  三.无连接传输:UDP
   UDP只是做了运输协议能够做的最少工作,除了多路复用/分解功能以及少量的差错检查外,它几乎没有对IP增加别的东西。而且需要注意,使用UDP时,在发送报文段之前,发送方和接受放的运输层实体之间没有握手。
   虽然看上去UDP比TCPlow了很多,但是事实上很多应用更适合UDP,主要原因如些:
    (1)关于何时、发送什么数据的应用层控制更为精细。
    (2)无需链接建立。因为UDP不会引入连接时延,所以DNS选择了UDP。
    (3)无连接状态。这样一般能之臣更多的活跃用户。
   虽然UDP提供差错检查,但是它对差错恢复无能为力。UDP的某种实现只是丢弃受损的报文段,其他实现是将受损的报文段交给应用程序并给出警告。
  四.面向连接的传输:TCP
    1.TCP被称为是面向连接的,是因为在两个进程开始发送数据之前,这两个进程必须先互相“握手”,即它们必须相互发送某些预备报文段,以确保数据传输的参数。但是事实上,中间路由器对TCP连接完全视而不见,它们看到的只是数据报,而不是连接。(因为本身运输层就是逻辑连接)
    2.TCP提供的是全双工服务,也就是说两个进程之间的数据传输可以从A流向B的同时,也可以从B流向A。而且,再一次发送操作中,不能从一个流向多个,只能是两个之间互传。
    3.TCP的三次握手:
      客户首先发送一个特殊的TCP报文段,服务器用另一个特殊的报文段来响应,最后,客户再用第三个特殊报文段作为响应。由于在两个主机之间发送了3个报文段,所以这种建立连接的过程被称为“三次握手”。其中,前两个报文段不承载“有效载荷”,也就是不包含应用层数据,而第三个报文段可以承载有效载荷。如下图:
      这里写图片描述
    具体描述:
     第一步:客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文段。该报文段中不包换应用层数据。但是在报文段的首部中的一个标志位(即SYN比特)被置为1,因此这个特殊的报文段被称为SYN报文段。另外,客户会随机地选择一个初始序号(client_isn),并将此编号放置于该起始的TCP SYN报文段的序号字段中。该报文段会被封装在一个IP数据报中,并发给服务器。
     第二步:一旦包含TCP SYN报文段的IP数据报到达服务器主机,服务器就睡从该数据报中提取出YCP SYN报文段,为该TCP连接分配TCP缓存和变量,并向该客户TCP发送允许连接的报文段,这个允许连接的报文段也不包含应用层数据。该允许连接的报文段有时被称为SYNACK报文段。
     第三步:在收到SYNACK报文段后,客户也要给该连接分配缓存和变量。客户主机则向服务器发送另外一个报文段,这最后一个报文段对服务器的允许连接的板瓦恩段进行了确认(该客户通过将值server_isn+1放置到TCP报文段首部的确认字段来完成此工作。而且SYN被置为0)。这个阶段就可以在报文段中携带客户到服务器的数据了。
    一旦完成这三个步骤,客户和服务器主机就可以相互发送包括数据的报文段了,在以后的每个报文段中,SYN比特都置为0.
  4.关闭一个TCP:
    参与一个TCP连接中的任意一方都能终止该连接,当连接结束后,主机中的缓存和变量将被释放。关闭过程如图:
    这里写图片描述
   具体过程:(假设为客户进程发起了一个关闭连接命令)这会引起客户TCP向服务器进程发送一个特殊的TCP报文段,这个特殊的报文段让其首部中的一个标志位即FIN比特被置为1.当服务器接收到该报文段后,就向发送方回送一个确认报文段。然后,服务器发送他自己的终止报文段,其FIN比特被置为1,而客户对这个服务器的终止报文段进行确认。此时,在两台主机上用于该连接的所有资源都被释放了。
   在一个TCP的生命周期内,运行在每台主机中的TCP协议在各种TCP状态之间变迁,如下图:
   这里写图片描述
  5.TCP拥塞控制:
    一般的拥塞控制方法有端到端拥塞控制和网络辅助的拥塞控制。
    TCP的另一个关键部分就是其拥塞控制机制,但是TCP必须使用端到端拥塞控制而不是网络辅助的拥塞控制,因为IP层不向端系统提供显示的网络拥塞控制。TCP所采用的的方法是让每一个发送方根据所感知到的网络拥塞控制程度来限制其能向连接发送流量的速率。
    TCP拥塞控制算法:
      该算法一共包含三个主要部分:
        (1)慢启动:TCP发起速率起始慢,但在慢启动阶段以指数增长。
        (2)拥塞避免
        (3)快速回复
       其中慢启动和拥塞避免是TCP的强制部分,两者的差异在于对收到的ACK做出反应时增加cwnd长度的方式。快速恢复是推荐部分,对TCP发送方不是必须的。
       TCP实现的一种端到端控制机制,即当TCP连接的路径上判断不拥塞时,其传输速率就加性增;当出现丢包是,传输速率就乘性减。这种机制也致力于做到每一个通过拥塞链路的TCP连接能平等的共享该链路带宽。
    
  
  

猜你喜欢

转载自blog.csdn.net/katrina_ali/article/details/79408024