纵有疾风起
人生不言弃

计算机网络学习(十一)

开启第三章的学习

一  主要知识点:

概述和运输层服务,多路复用和多路分解

二  概述和运输层服务

1:运输层协议为运行在不同主机上的应用程序之间提供的逻辑通信功能。

计算机网络学习(十一)插图

2:如上图,运输层协议是在端系统中而不是在路由器中实现的。

3:在发送端,运输层将从发送应用程序进程收到的报文转换成运输层分组,用因特网术语来讲该分组称为运输层报文段。实现的方法(可能)是将应用报文划分为较小的块,并为每块加上一个运输层首部以生成运输层报文段。然后,在发送端系统中,运输层将这些报文段传递给网络层,网络层将其封装成网络层分组(即数据报)并向目的地发送。

4:网络路由器仅作用于该数据报的网络层字段,即他们不检查封装在该数据报的运输层报文段的字段。在接收端,网络层从数据报中提取运输层报文段,并将该报文段向上交给运输层。运输层则处理接收到的报文段,使该报文段中的数据为接收应用进程使用。

A:运输层和网络层的关系

1:在协议栈中,运输层刚好位于网络层之上。网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。

2:运输层协议能够提供的服务常常受制于底层网络层协议的服务模型。如果网络层协议无法为主机之间的运输层报文段提供时延或带宽保证的话,运输层协议也就无法为进程之间发送的应用程序报文提供时延或带宽保证。

3:即使底层网络协议不能在网络层提供的服务,运输层协议也能提供某些服务。例如:即使底层协议是不可靠的,也就是说网络层协议会使分组丢失,篡改和冗余,运输协议也能为应用程序提供可靠的数据传输服务。另一个例子是:即使网络层不能保证运输层报文段的机密性,运输协议也能使用加密来确保应用程序报文不被入侵者读取。

B:因特网运输层概述

1:因特网网络层协议有一个名字叫IP,即国际协议。IP为主机之间提供了逻辑通信。IP的服务模型为尽力而为交付服务。这意味着IP尽它最大的努力在通信的主机之间交付报文段,但它并不做任何确保。特别的是它不确保报文段的交付,不保证报文段的按序交付,不保证数据报中数据的完整性。由于这些原因,IP被称为不可靠服务

2:udp和tcp最基本的责任是,将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务。

三:多路复用和多路分解

1:将主机间交付扩展到进程间交付被称为运输层的多路复用与多路分解。

2:在目的主机,运输层从紧邻其下的网络层接收报文段。运输层负责将这些报文段中的数据交付给在主机上运行的适当应用程序进程。

3:一个进程(作为网络应用的一部分)有一个或多个套接字,它相当于从网络向进程传递数据和从进程向网络传递数据的门户。

计算机网络学习(十一)插图1

4:在接收端,运输层检查这些字段,标识出接收套接字,进而将报文段定向到该套接字。将运输层报文段中的数据交付到正确的套接字的工作称为多路分解。

5:在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息(这将在以后用于分解)从而生成报文段,然后将报文段传递到网络层,所有这样的工作称为多路复用。

计算机网络学习(十一)插图2

6:运输层多路复用要求,a:套接字有唯一标识符。b:每个报文段有特殊字段来指示该报文段所要交付到的套接字。这些特殊的字段是源端口号字段和目的端口号字段。

7:端口号是一个16比特的数,其大小在0-62235之间。0-1023范围的端口号称为周知端口号,是受限制的,这是指它们保留给诸如http(它使用的端口号是80)和FTP(它使用的端口号是21)之类的周知应用层协议来使用。当我们开发一个新的应用程序时必须为其分配一个端口号。

8:在主机上的每个套接字能够分配一个端口号,当报文段到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字。然后报文段中的数据通过套接字进入其所在连接的进程。

9:无连接的多路复用与多路分解,

a:一个udp套接字是由一个二元组来全面标识的,该二元组包含一个目的的IP地址和一个目的端口号。因此,如果两个udp报文段有不同的源IP地址和/或源端口号,但具有相同的目的的IP地址和目的端口号,那么这两个报文段将通过相同的目的套接字被定向到相同的目的进程。

计算机网络学习(十一)插图3

10:面向连接的多路复用和多路分解

a:tcp套接字是由一个四元组(源IP地址,源端口号,目的IP地址,目的端口号)来标识的。

b:两个具有不同源IP地址或源端口号的到达tcp报文段将被定向到两个不同的套接字,除非tcp报文段携带了初始创建连接的请求。

计算机网络学习(十一)插图4

11:web服务器与tcp

a:如上图一台web服务器为每条连接生成一个新进程,每个这样的进程都有自己的连接套接字,通过这些套接字可以收到http请求和发送http响应。

b:当今的高性能web服务器通常只使用一个进程,但是为每个新的客户连接创建一个具有新连接套接字的新线程。(线程可被看做是一个轻量级的子进程)

c:如果客户与服务器使用持续http,则在整条连接持续期间,客户与服务器之间经由同一个服务器套接字交换http报文。然而,如果客户与服务器使用非持续http,则对每一条请求/响应都创建一个新的tcp连接并在随后关闭,因此对每一对请求/响应创建一个新的套接字并随后关闭。这种套接字的频繁创建和关闭会严重地影响一个繁忙的web服务器的性能(尽管有许多操作系统技巧可用来减轻这个问题的影响)

未经允许不得转载:起风网 » 计算机网络学习(十一)
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录