目录

第五章 运输层

5.1 运输层协议概述

运输层协议:

UDP和TCP区别:

运输层的端口:

5.2 用户数据报协议UDP

UDP的特点:

UDP的首部格式:

5.3 传输控制协议TCP概述

TCP的特点:

5.4 可靠传输的工作原理

停止等待协议:

连续ARQ协议:

5.5 TCP报文的首部格式

5.6 TCP可靠传输的实现

5.7 TCP的流量控制

5.8 TCP的拥塞控制

拥塞控制的一般原理:

拥塞控制算法:

5.9 TCP的运输连接管理

TCP的连接建立(三次握手)

TCP的连接释放(四次挥手)


第五章 运输层

5.1 运输层协议概述

运输层向他上面的应用层提供提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,都要使用协议栈中的运输层。

真正进行通信的实体是主机中的应用进程。

运输层有一个很重要的功能——复用和分用。

运输层提供应用进程间的逻辑通信。

网络层为主机之间的通信提供服务,运输层则在网络层的基础上,为应用进程之间的通信提供服务。

运输层协议:

面向连接的传输控制协议TCP和无连接的用户数据报协议UDP。

按照 OSI 的术语,两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元TPDU。但在TCP/IP体系中,则根据所使用的协议是TCP或UDP,分别称之为TCP报文段或UDP用户数据报。

UDP和TCP区别:

UDP在传送数据之前不需要先建立连接。UDP 不提供可靠交付。高效率传输、实时性。
TCP则提供面向连接的服务。TCP不提供广播或多播服务。TCP 提供可靠的、面向连接的运输服务。

运输层的端口:

(1)服务器端使用的端口号。一类是熟知端口号或全球通用端口号,数值为0~1023。

 另一类叫作登记端口号,数值为1024~49151。这类端口号是为没有熟知端口号的应用程序使用的。要使用这类端口号必须在IANA按照规定的手续登记,以防止重复。

(2)客户端使用的端口号。数值为49152~65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫作短暂端口号。这类端口号就是临时端口号。

5.2 用户数据报协议UDP

UDP的特点:

(1)UDP是无连接的。

(2)UDP使用尽最大努力交付。

(3)UDP是面向报文的。UDP一次交付一个完整的报文。应用层必须选择合适大小的报文。

(4)UDP没有拥塞控制。

(5)UDP支持一对一、一对多、多对一和多对多的交互通信。

(6)UDP的首部开销小。

UDP的首部格式:

(1)源端口 源端口号。在需要对方回信时选用。不需要时可用全0。
(2)目的端口 目的端口号。这在终点交付报文时必须使用。
(3)长度 UDP用户数据报的长度,其最小值是8(仅有首部)。
(4)检验和 检测UDP用户数据报在传输中是否有错。有错就丢弃。

5.3 传输控制协议TCP概述

TCP的特点:

(1)TCP是面向连接的运输层协议(三次握手)。

(2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。

(3)TCP提供可靠交付的服务。

(4)TCP提供全双工通信。

(5)面向字节流。TCP中的“流”指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。

TCP连接是一条虚连接(也就是逻辑连接),而不是一条真正的物理连接。

TCP并不关心应用进程一次把多长的报文发送到TCP的缓存中,而是根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)。

TCP把连接作为最基本的抽象。

每一条TCP连接有两个端点。

套接字:端口号拼接到IP地址即为套接字。

套接字socket=(IP地址:端口号)。

5.4 可靠传输的工作原理

停止等待协议:

1.无差错情况

2.出现差错(A->B出错)

超时重传。

注意:

第一,A在发送完一个分组后,必须暂时保留已发送的分组的副本(在发生超时重传时使用)。
第二,分组和确认分组都必须进行编号。
第三,超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些。

3.确认丢失和确认迟到(B->A出错)

B-->A的确认丢失,A重传M1,B再次收到M1.此时B应该:

(1)丢弃这个重复的分组M1,不向上层重复交付。

(2)向A发送确认。

像上述的这种可靠传输协议常称为自动重传请求ARQ。

连续ARQ协议:

连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

接收方一般都是采用累积确认的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认。

5.5 TCP报文的首部格式

TCP首部的最小长度是20字节。

(1)源端口和目的端口 各占两个字节。

(2)序号 占4字节。序号范围是[0,-1],序号增加到-1后,下一个序号就又回到0。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。首部中的序号字段值则指的是本报文段所发送的第一个字节的序号。

(3)确认号 占4字节,是希望收到对方下一个报文段的第一个数据字节的序号。

若确认号=N,则表明到序号N-1为止的所有数据都已正确收到。

(4)数据偏移 占4位,实际上是指出TCP报文段的首部长度,最大值是60字节。

(6)紧急URG 当URG=1时,说明紧急指针字段有效。当URG=1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP就把紧急数据插入到本报文段数据的最前面。

(7)确认ACK 仅当ACK=1时确认号字段才有效。

(8)推送PSH 接收方TCP收到PSH=1的报文段,就尽快地(推送向前)交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。

(9)复位RST 当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。

(10)同步SYN 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。SYN置为1就表示这是一个连接请求或者连接接受报文。

(11)终止FIN 用来释放一个连接。

(12)窗口 窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。窗口值告诉对方:从本报文段首部的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。窗口值作为接收方让发送方设置其发送窗口的依据。

窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化着。

(13)检验和 检验和字段检验的范围包括首部和数据两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。

(14)紧急指针 紧急指针仅在URG=1时有意义,他指出本报文段中的紧急数据的字节数。紧急指针指出了紧急数据的末尾在报文段中的位置。

(15)选项 长度可变,最长40字节。

5.6 TCP可靠传输的实现

TCP的滑动窗口是以字节为单位的。

发送缓存用来暂时存放:
(1)发送应用程序传送给发送方TCP准备发送的数据:
(2)TCP已发送出但尚未收到确认的数据。
发送窗口通常只是发送缓存的一部分。发送缓存和发送窗口的后沿是重合的。

接收缓存用来暂时存放:
(1)按序到达的、但尚未被接收应用程序读取的数据;
(2)未按序到达的数据。

注意:

第一,在同一时刻,A的发送窗口并不总是和B的接收窗口一样大。
第二,对于不按序到达的数据应如何处理,TCP标准并无明确规定。TCP通常是把不按序到达的数据先临时在放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。

第三,TCP要求接收方必须有累积确认的功能,这样可以减小传输开销。TCP标准规定,确认推迟的时间不应超过0.5秒。
最后再强调一下,TCP的通信是全双工通信。

5.7 TCP的流量控制

流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。

发送方的发送窗口不能超过接收方给出的接收窗口的数值。TCP的窗口单位是字节,不是报文段。

TCP为每一个连接设有一个持续计时器。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段。

5.8 TCP的拥塞控制

拥塞控制的一般原理:

拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。拥塞控制所要做的都有一个前提,就是网络能承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。

流量控制往往是指点对点通信量的控制,是个端到端的问题。

拥塞控制是很难设计的,因为它是一个动态的问题。

分组的丢失是网络发生拥塞的征兆而不是原因。

在很多情况下,甚至正是拥塞控制机制本身成为引起网络性能恶化甚至发生死锁的原因。

拥塞控制可以分为开环控制和闭环控制两种方法。

开环控制就是在设计网络时事先将发生拥塞的有关因素考虑周到,力求网络在工作时不产生拥塞。但一旦整个系统运行起来,就不再中途进行改正了。
闭环控制是基于反馈环路的概念,主要有以下几种措施:(1)监测网络系统以便检测到拥塞在何时、何处发生。(2)把拥塞发生的信息传送到可采取行动的地方。(3)调整网络系统的运行以解决出现的问题。

拥塞控制算法:

1.慢开始和拥塞避免

发送方维持一个叫做拥塞窗口cwnd的状态变量。

发送方在①重传计时器超时②收到三个相同(重复)ACK时就判断网络出现了拥塞。

真正的发送窗口值=Min[接收窗口值,拥塞窗口值]。

慢开始门限ssthresh用法如下:

发送方只要一连收到3个重复确认,就可知道现在并未出现网络拥塞,只是接收方少收到一个报文段,因而立即进行重传(“快重传”)。

5.9 TCP的运输连接管理

运输连接有三个阶段:连接建立、数据传送和连接释放。

TCP连接的建立采用客户服务器方式。主动发起连接建立的应用进程叫做客户,被动等待连接建立的应用进程叫做服务器。

TCP的连接建立(三次握手)

TCP的连接释放(四次挥手)

计算机网络复习(第五章)相关推荐

  1. 算法复习第五章贪心法

    算法复习第五章贪心法 概述 TSP 最近邻点策略 最短连接策略 图着色问题 最小生成树(Prim算法.Kruskal) 0-1bag问题 活动安排问题 多机调度 概述 TSP 最近邻点策略 最短连接策 ...

  2. 零基础带你学习计算机网络复习—(五)

    零基础带你学习计算机网络复习-(五) 学习内容 一.数据链路层的概述 二.封装成帧 三.差错检测 四.可靠传输的基本概念 五.可靠传输的实现机制-停止等待协议 六.可靠传输的实现机制-回退N帧协议 七 ...

  3. 计算机网络复习-第六章应用层

    计算机网络复习-第六章应用层 第六章 应用层 应用层协议概述 应用层协议特点 每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的 ...

  4. 王道考研 计算机网络笔记 第五章:传输层

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...

  5. 通信网络基础期末复习-第五章-路由算法

    写在前面:本文主要依据为<通信网络基础>李建东,盛敏编著,如有侵权,请联系作者删除.本文仅用于个人期末复习与知识结构的搭建. 文章目录 第五章 路由算法 5.1 路由算法概述 5.1.1路 ...

  6. 《计算机组成原理》复习第五章—中央处理器

    第五章 中央处理器 5.1 CPU功能和组成 5.1.1 CPU的基本功能 CPU主要包括了运算器和控制器两大部分,运算器的功能实现第二章已经学过了,这里我们中点讨论一下控制器的内容. 当一条指令进入 ...

  7. 软件工程经济学期末复习第五章

    软件工程经济学期末复习总结 第5章 软件生产过程经济分析 软件生产过程: 规划.需求分析.概要设计.详细设计.编码.系统集成.测试.交付 本章研究主要内容: 生产过程的规模效应 投入要素与产出关联变动 ...

  8. 计算机网络复习_第一章

    前言: 今天复习第一章 1.2 计算机网络由若干结点和连接这些结点的链路组成1.3 互联网的组成 从工作方式上看,可以划分为以下两大块: 边缘部分:由所有连接在互联网上的主机组成.这部分是用户直接使用 ...

  9. 计算机网络复习——第四章网络层

    9月开始学习的一个月,I hope everthing be fine. 相关知识见,感觉比较容易入手 <计算机网络>(谢希仁)内容总结 | JavaGuide 重点知识: TCP/IP ...

  10. 【计算机网络】第五章 数据链路层(3)

    四.ARP协议 1. MAC地址(LAN地址.物理地址.以太网地址) (1)作用:用于局域网内标识一个帧从哪个接口发出,到达哪个物理相连的其他接口 (2)固化在网卡的ROM中(唯一的),有时可以软件设 ...

最新文章

  1. 限制TensorFlow只在CPU上运行的方法
  2. UVa10795 - A Different Task
  3. html表格分页无插件,wordpress无插件实现单篇文章分页显示
  4. 学校计算机教室的用途,录播教室有什么功能,又有哪些用途
  5. python网站设计中接口的作用_python接口自动化(三)--如何设计接口测试用例(详解)...
  6. 李航统计方法——感知机
  7. 云计算:21世纪的商业平台
  8. 苹果Mac上好用的分屏软件:Magnet
  9. Python学习记录之----网络通信(二)
  10. python的标准库——turtle
  11. 比例调速阀AMESim仿真
  12. sharepoint FAST serach 设置
  13. Visio 安装暴雷记录
  14. unicode编码和utf-8编码的区别
  15. 前端PDF文件转图片方法(你值得收藏)
  16. 自动生成PDF文件(Java通过PDF模板自动生成PDF)
  17. 如何去掉“Picked up JAVA_TOOL_OPTIONS: -Djava.vendor=“Sun Microsystems Inc.“” 提示
  18. Sping的基础知识总结(01)
  19. css网页布局小练习,文字案例,小米官网卡片案例
  20. Qorvo 扩展 750V SiC FET 范围

热门文章

  1. 形式化、半形式化和非形式
  2. 大数据Hadoop系列之HDFS命令讲解
  3. Sharding-JDBC 基础
  4. 浅析c4编译器--一个优秀的编译器是如何生成的
  5. myeclipse部署时An internal error occurred 错误的几种情况
  6. 使用Boost::Log记录日志
  7. C语言实现求n的阶乘(n!),阶乘的和。
  8. 【Sofice小司笔记】1 Java,包含java基础知识,集合,面向对象,反射,泛型等
  9. SQLyog的安装及使用
  10. 车型识别“A Large-Scale Car Dataset for Fine-Grained Categorization and Verification”