文章目录
计算机网络学习笔记:第三章
前言
3.1、概述和运输层服务
3.1.1 运输层和网络层的关系
3.1.2 因特网运输层概述
3.2、多路复用与多路分解
前言
运输层位于应用层和网络层之间,是分层的网络体系的重要部分;该层为运行在不同主机上的应用进程提供直接的通信服务起着至关重要的作用。在这里我们将讨论两个大的问题:将网络层在不同端系统之间的通信服务扩充到运行在两个端系统上不同的应用层进程之间的通信服务(如何实现进城之间通信的可靠传输)和控制传输层实体的传输速度以避免网络拥塞或者从网络拥塞中恢复过来,这里需要考虑的有拥塞的后果和原因以及常见的拥塞控制手段;特别的,我们将了解TCP协议中的拥塞控制。

3.1、概述和运输层服务
传输层协议为运行在不同端系统上的应用进程之间提供逻辑通信功能;应用层进程使用传输层提供的逻辑通信功能而无需考虑实现通信的物理基础设施的细节;

传输层协议是在端系统中实现的而不是在路由器中实现的。传输层接收来自应用层的报文并通过添加传输层首部以生成传输层报文段。在生成过程中可能会对来自应用层的报文加以分割;然后在发送端系统中,运输层会将这些报文段交给网络层;网络层将其封装成网络层分组,也被称为数据报,然后向目的地发送。路由器不会检查封装在数据报中的传输层报文段的字段;在接收端,网络层从数据报中抽取传输层报文段,并将其交给运输层,运输层接收到报文段后,使该报文段中的数据被接收应用进程所使用。

网络应用可以使用多种传输层协议,因特网有两种传输层协议,即TCP和UDP,不同的传输层协议提供不同的运输层服务;

3.1.1 运输层和网络层的关系
在协议栈中,运输层刚好位于网络层之上;网络层提供主机之间的逻辑通信而传输层为运行在不同主机上的应用进程提供逻辑通信;运输层协议只工作在端系统中。在端系统中,传输层协议将来自应用进程的报文移动到网络边缘即网络层,反过来也从网络层接收这些报文段;传输层对报文段如何在网络核心传输并不做干涉;事实上中间路由器既不处理也不识别传输层加载应用层报文上的任何信息;

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

然而即使底层网络协议不能在网络层提供响应的服务,运输层协议也能提供某些服务。例如,即使底层网络协议是不可靠的,运输协议也能为应用程序提供可可靠的数据传输服务(即使底层网络协议不可靠,使分组丢失和篡改,运输协议也能为应用程序提供可靠的的数据传输服务)。

3.1.2 因特网运输层概述
因特网为应用层提供了截然不同的两种传输层协议:UDP(用户数据报协议)它提供一种不可靠、无连接的服务;另一种是TCP,它提供可靠的,面向连接的服务;运输层分组也被称为报文段;

简单了解一下因特网的网络层,网络层协议有一个名字即IP,即网际协议。IP为主机间提供逻辑通信,IP的服务模型为尽力而为交付服务(best-effort delivery service)这意味着IP尽最大的努力在主机间交付报文段,但是不做任何保证。它不保证报文段的交付、不保证报文段按序交付、不保证报文段中数据的完整性;即IP提供一种不可靠的服务;每台主机都需要有一个网络层地址,即IP地址。

UDP和TCP最基本的责任就是将IP提供的主机间交付服务扩展到不同端系统上两个进程之间的服务,这也被称为传输层的多路分解和多路复用;UDP和TCP通过在传输层首部添加差错检查字段来提供完整性检查。进程到进程之间的数据交付和差错检查是最低限度的两种传输层服务,也是UDP可以提供的仅有的两种服务。UDP和IP一样,也是不可靠服务;

TCP提供额外的服务,首先它是一种可靠数据服务,这意味着TCP协议保证数据的按序、完整地从发送端应用进程发送到接收端应用进程;TCP通过流量控制、序号、确认和定时器,将IP的不可靠数据传输转换为可靠数据传输;其次,TCP提供拥塞控制,拥塞控制与其说是一种提供给应用程序的服务,不如说是一种提供给整个网络的服务,因为整个网络都将因为拥塞控制而受益;不太严格地说,拥塞控制力求为每一个经过一条拥塞网络的连接提供平等的共享网络链路带宽,从而避免一条TCP连接用过多的流量来淹没通信主机之间的链路和设备;TCP的拥塞控制是通过调节发送进网络的的流量速率来做得到;UDP不提供拥塞控制,使用UDP传输的应用程序可以根据需要以任意的速率发送数据。

3.2、多路复用与多路分解
前文提到,传输层将网络层提供的面向主机的逻辑通信扩充为面向不同应用进程的逻辑通信,并且这一过程称为多路复用和多路分解;多路复用和多路分解是每个计算机网络都需要的;

在目的主机,运输层从紧邻其下的网络层接收报文段;运输层负责将这些报文段中的数据交付给在主机上运行的应用程序进程; 2.7节提到,一个进程有一个或者多个套接字,相当于从网络向进程传递数据和从进程向网络传递数据的门户;传输层和应用程序进程之间通过套接字关联,接收主机的运输层实际上并没有直接将数据交付给进程,而是将将数据交付给中间的一个套接字;在任一时刻,接收主机上可能不止一个套接字,每个套接字都有唯一标识符;

传输层从同一台主机上的不同Socket接收数据的过程称为多路复用;传输层向同一台主机上的不同Socket传输数据的过程称为多路分解;为了实现多路复用和多路分解,我们需要标志套接字,并将相关信息添加到报文段中。

传输层多路复用要求:1)套接字有唯一标识符;2)每个报文段都有源端口号字段和目的端口号字段来指示该报文段所要交付到的套接字;
端口号大小在0-65535之间,其中0-1023属于周知端口号,它们为特定的Socket而拥有。
运输层如何实现分解服务:主机上每个套接字能分配一个端口号;报文达到主机时,运输层检查报文段的目的端口号,并将其定向到相应套接字,然后报文段中数据通过套接字进入其所连接的进程;UDP大致是这样做的,TCP更复杂;

无连接的多路复用与多路分解

需要注意的是,在创建Socket的时候,是由传输层为之分配端口号;一个UDP套接字是由一个目的IP地址和目的端口号(即二元组)来标志的;如果两个UDP报文段有不同的源IP地址或者源端口号,但是有相同的目的IP和目的端口号的话,它们将通过同一个Socket到达同一个应用程序;

源端口号的用途:例如A到B的报文段中,源端口号作为“返回地址”的一部分,即当B要回发一个报文段给A,B到A的报文段中的目的端口号便从A到B的报文段中的源端口号取值(完整返回地址还包括A的IP地址);

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

TCP协议中的Socket是通过一个四元组来标记的:(源IP地址,源端口号,目的IP地址,目的端口号);两个具有不同源IP地址或者源端口号,但有相同的目的IP地址和目的端口号的TCP报文段将通过两个不同的Socket进入同一应用进程;这也表示,一个应用进程可以关联多个Socket,而一个Socket将只关联一个应用进程;常常,这样的对应关系是通过线程来实现的:一个进程有多个线程,而每个线程关联了一个Socket;这样做可以提高服务器性能;

实际上,传输层就是根据这些信息来实现多路分解的;而这些信息是在多路复用的时候被放置在报文段中的;

计算机网络学习笔记:第三章相关推荐

  1. [吴功宜]计算机网络学习笔记--第三章 数据链路层

    教材:计算机网络(第四版) 作者:吴功宜 吴英 出版社:清华大学 第三章 数据链路层 3.1 差错产生的原因与差错控制方法 物理线路:由传输介质与通信设备组成 设计数据链路层的主要目的:在有差错的物理 ...

  2. 计算机网络学习笔记——第三章:数据链路层

    目录 第三章:数据链路层 3.1 数据链路层功能概述 3.2 封装成帧和透明传输 3.3 差错控制 3.3.1 检错编码 3.3.2 纠错编码 3.4 流量控制与可靠传输机制 3.4.1 流量控制.可 ...

  3. 计算机网络学习笔记:第二章

    文章目录 计算机网络学习笔记:第二章 前言 2.1.应用层协议原理 2.1.1 网络应用程序体系结构 2.1.2 进程通信 2.1.3 可供应用程序使用的运输服务 2.1.4 因特网提供的传输层服务 ...

  4. 《Go语言圣经》学习笔记 第三章 基础数据类型

    <Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...

  5. 机器人导论(第四版)学习笔记——第三章

    机器人导论(第四版)学习笔记--第三章 3 操作臂运动学 3.1 引言 3.2 连杆的描述 3.3 连杆连接的描述 3.4 连杆坐标系的定义 3.5 操作臂运动学 3.6 驱动空间.关节空间和笛卡尔空 ...

  6. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第三章:简单控件

    第 3 章 简单控件 本章介绍了App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图.容纳视图的常用布局.响应点击的按钮控件.显示图片的图像视图等.然后结合本章所学的知识,演示了一个实战项 ...

  7. Win32学习笔记 第三章 HelloWin 选择自 villager 的 Blog

    Win32学习笔记 作者: 姜学哲(netsail0@163.net) 教材: Windows程序设计(第五版)北京大学出版社  [美]Charles Petzold 著  北京博彦科技发展有限公司 ...

  8. 计算机网络学习笔记(三)——数据链路层功能和服务、帧定位、差错、海明距离、检错码和纠错码

    文章目录 前言 概念 一.链路层功能与服务 二.成帧和帧同步(帧定位) [1]字节计数法 [2]字符填充首尾定界法 [3]位填充首尾定界法 [4]块传输与物理层违例编码定界法 [5]校验和法 三.链路 ...

  9. 计算机网络 学习通 第三章作业

    题又有几道重的.. 第三章 目 录 第三章 一.单选题 二.填空题 三.简答题 四.论述题 五.计算题 一.单选题 1.在计算机网络中,所有的计算机均连接到一条通信传输线路上,在线路两端连有防止信号反 ...

  10. 计算机网络原理笔记 第三章 数据链路层(一)

    计算网络原理 第三章 数据链路层 数据链路层(一) 3.1 使用点对点信道的数据链路层 3.1.1 数据链路层和帧 3.1.2 三个基本问题 数据链路层的信道类型 3.2 点对点协议 PPP 3.2. ...

最新文章

  1. 20155321 实验四 Android程序设计
  2. 如何避免Java中的回调“地狱”
  3. 史上最详细的RocketMq 下单支付案例 分享
  4. Linux shell脚本编程(二)
  5. 在局域网访问_局域网访问共享文件需要密码怎么办?取消访问密码的方法
  6. 编译lua5.3.5报错:libreadline.so存在多处未定义的引用
  7. oracle类型介绍,Oracle数字的3种基本类型介绍[转]
  8. testbench实例 vhdl_VHDL的testbench的编写
  9. 网上邻居搜索到计算机无法打开,网上邻居无法访问您可能没有权限使用网络资源...
  10. NShape(开源矢量图形编辑器) 入门(一)
  11. 如何区分零线和地线,及其相关理解
  12. 怎么用python画世界地图_用Python画世界地图
  13. 命令行工具 DOT和DOH测试
  14. java选择结构与分支结构
  15. Lect2 线性分类
  16. Vultr IP及SSH 故障排除信息
  17. 接口测试的标准和规范性
  18. 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间
  19. cmd、命令大全、DOS命令、使用方法(超全),是我喜欢的文章
  20. 是时候关注ZGC和昏暗的Nashorn的明星了:Java影响者参与其中

热门文章

  1. php程序员的情书,只有程序员才看得懂的情书
  2. bigint最大有多少位_《追光吧哥哥》21位艺人靠实力成团?不见得,节目赛制本不公平...
  3. D5000工作站服务器型号,【戴尔Precision T5820参数】戴尔Precision T5820系列工作站参数-ZOL中关村在线...
  4. 华为p20Android怎么解开,华为P20如何获得root权限来解决自启动手机应用程序的问题...
  5. idea中的一个子模块中的pom文件带横线、maven为灰色
  6. 媒体查询能html的ID吗,基于Javascript的媒体查询
  7. 给php添加标题的代码,纯代码给WP网站的分类和Tag页面添加自定义标题
  8. mysql 数据增量备份_MySQL数据库之mysql全量备份、增量备份实现方法
  9. java vim ide_把VIM配置成IDE开发环境 | 学步园
  10. java 与 .net socket_java.net.ServerSocket和java.net.Socket