【b站-湖科大教书匠】5 运输层 - 计算机网络微课堂

课程地址:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155

目录

5 运输层

5.1 运输层概述

5.2 运输层端口号、复用与分用

5.2.1 运输层端口号

5.2.2 发送方的复用和接收方的分用

5.2.3 TCP/IP体系应用层常用协议所使用的运输层熟知端口号

5.2.4 案例-运输层端口号的作用

5.3 UDP和TCP的对比

5.3.1 无连接和面向连接

5.3.2 单播、多播和广播

5.3.3 对应用报文处理

5.3.4 可靠/不可靠传输服务

5.3.5 数据报首部

5.4 TCP的流量控制

5.5 TCP的拥塞控制

5.6 TCP超时重传时间的选择

5.7 TCP可靠传输的实现

5.8 TCP的运输连接管理

5.8.1 TCP的连接建立

1 TCP使用三报文握手建立连接

5.8.2 TCP的连接释放

1 TCP使用四报文挥手释放连接

2 保活计时器

5.9 TCP报文段的首部格式

5.9.1 源端口和目的端口

1 源端口和目的端口的作用

5.9.2 序号&确认号&确认标志位ACK

5.9.3 数据偏移        

5.9.4 保留

5.9.5 窗口

5.9.6 校验和

5.9.7 同步标志位SYN

5.9.8 终止标志位FIN

5.9.9 复位标志位RST

5.9.10 推送标志位PSH​编辑

5.9.11 紧急标志位URG&紧急指针

5.9.12 选项

5.9.13 填充


5 运输层

5.1 运输层概述

具体内容如下。

如上图所示,局域网1上的主机,与局域网2上的主机,通过互联的广域网进行通信。

网络层的作用范围是主机到主机,但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。

上图,AP1和AP2是局域网1这台主机中的与网络通信相关的2个应用进程。AP3和AP4是局域网2上这台主机的与网络通信相关的2个应用进程。

AP是应用进程的英文缩写词。

运输层协议又称为端到端协议,运输层的作用范围是应用进程到应用进程,也称为端到端。

从计算机网络体系结构的角度看运输层

应用进程在应用层。

假设AP1与AP4之间进行基于网络的通信,AP2与AP3之间进行基于网络的通信。

运输层使用不同的端口对应不同的应用进程。

然后通过网络层及其下层传输应用层报文。

接收方的运输层通过不同的端口将收到的应用层报文交付给应用层相应的应用进程。

需要注意:这里的端口不是指看得见摸得着的物理端口,而是指用来区分不同应用进程的标识符。

简单起见,认为运输层直接为应用进程间的逻辑通信提供服务。

逻辑通信的意思是,运输层之间的通信,好像是沿水平方向传送数据。但事实上,两个运输层之间并没有一条水平方向的物理连接。要传送的数据是沿着图中上下多次的虚线方向传送的

运输层向高层用户屏蔽了下面网络核心的细节。

总结

5.2 运输层端口号、复用与分用

具体内容如下。

5.2.1 运输层端口号

运输层的任务是直接为应用进程间的逻辑通信提供服务。

运输层使用端口号来区分不同的应用进程。

5.2.2 发送方的复用和接收方的分用

如图所示,这是收发双方的应用进程。

发送方的某些应用进程所发送的不同应用报文,在运输层使用UDP协议进行封装,这称为UDP复用,而另一些应用进程所发送的不同应用报文在运输层使用TCP协议进行封装,这称为TCP复用。

运输层使用端口号来区分不同的应用进程。不管是使用运输层的UDP协议封装成的UDP用户数据报,还是使用TCP协议封装成的TCP报文段,在网络层都需要使用IP协议封装成IP数据包,这称为IP复用。

IP数据报首部中协议字段的值,用来表明IP数据报的数据载荷部分封装的是何种协议数据单元。取值为6表示封装的是TCP报文段,取值为17表示封装的是UDP用户数据报。

接收方的网络层收到IP数据报后进行IP分用。若IP数据报首部中协议字段的值为17,则把IP数据报的数据载荷部分所封装的UDP用户数据报上交运输层的UDP。若协议字段的值为6,则把IP数据报的数据载荷部分所封装的TCP报文段上交运输层的TCP。

运输层对UDP用户数据报进行UDP分用,对TCP报文段进行TCP分用,也就是根据端口号将他们交付给上层相应的应用进程。

5.2.3 TCP/IP体系应用层常用协议所使用的运输层熟知端口号

这些是TCP/IP体系的应用层常用协议。

其中这些协议在运输层使用UDP协议,这是他们各自使用的运输层熟知端口号。

这些协议在运输层使用TCP协议,这是他们各自使用的运输层熟知端口号。
 

不管在运输层使用UDP还是TCP协议,在网络层都是使用IP协议。IP数据报首部中协议字段的值,表明了IP数据报数据载荷部分封装的是何种协议数据单元。

5.2.4 案例-运输层端口号的作用

如图所示,用户PC、DNS服务器、Web服务器通过交换机进行互联,他们处于同一个以太网中。

假设这是Web服务器的域名。DNS服务器装记录有该域名所对应的IP地址。

我们在用户PC中使用网页浏览器来访问Web服务器的内容。

在网页浏览器的地址栏中输入Web服务器的域名。用户PC中的DNS客户端进程会发送一个DNS查询请求报文,其内容为域名www.parttest.com所对应的IP地址是什么?

封装UDP用户数据报:DNS查询请求报文需要使用运输层的UDP协议封装成UDP用户数据报,其首部中的源端口字段值,在短暂端口号49151到65535中挑选一个未被占用的,用来表示DNS客户端进程,例如49152。目的端口字段的值设置为53,这是DNS服务器端进程所使用的熟知端口号

封装IP数据报:之后,将UDP用户数据报封装在IP数据报中,通过以太网发送给DNS服务器。

解析IP数据报:DNS服务器端收到该数据包后从中解封出UDP用户数据报。UDP首部中的目的端口号为53,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS查询请求报文,交付给本服务器中的DNS服务器端进程。

解析UDP数据报:DNS服务器端进程解析DNS查询请求报文的内容,然后按其要求查找对应的IP地址,之后会给用户PC发送DNS的响应报文,其内容为域名www.porttest.com所对应的IP地址是192.168.0.3。

发送DNS响应报文:DNS响应报文需要使用运输层的UDP协议封装成UDP用户数据报,其首部中的源端口字段的值设置为熟知端口号53,表明这是DNS服务器端进程所发送的UDP用户数据报,目的端口字段的值设置为49152,这是之前用户PC中发送DNS查询请求报文当DNS客户端进程所使用的短暂端口号。

之后将UDP用户数据报封装在IP数据报中。


通过以太网发送给用户PC。

解析UDP数据报:用户PC收到该数据报后从中解封出UDP用户数据报。

UDP首部中的目的端口号为49152,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS响应报文交付给用户PC中的DNS客户端进程。

DNS客户端进程解析DNS响应报文的内容,就可知道自己之前所请求的Web服务器的域名所对应的IP地址为192.168.0.3。

现在用户PC中的HTTP客户端进程可以向Web服务器发送HTTP请求报文了,其内容为首页内容是什么?

HTTP请求报文需要使用运输层的TCP协议封装成TCP报文段,其首部中的源端口字段的值,在短暂端口号49151到65535中挑选一个未被占用的,用来表示HTTP客户端进程。例如,仍然使用之前用过的49152。目的端口字段的值设置为80,这是HTTP服务器端进程所使用的熟知端口号。

之后,将TCP报文段封装在IP数据报文中通过以太网发送给Web服务器。

Web服务器收到该数据包后,从中解封出TCP报文段。

TCP首部中的目的端口号为80,这表明应该将该TCP报文段的数据载荷部分,也就是HTTP请求报文交付给本服务器中的HTTP服务器端进程。HTTP服务器端进程解析HTTP请求报文的内容,然后按其要求查找首页内容之后,会给用户PC发送HTTP响应报文。

HTTP响应报文内容是HTTP客户端所请求的首页内容。

HTTP响应报文需要使用运输层的TCP协议封装成TCP报文段,即首部中的源端口号字段的值设置为熟知端口号80,表明这是HTTP服务器端进程所发送的TCP报文段。目的端口字段的值设置为49152,这是之前用户PC中发送HTTP请求报文当HTTP客户端进程所使用的短暂端口号。

之后,将TCP报文段封装在IP数据报中,通过以太网发送给用户PC。

用户PC收到该数据包后从中解封出TCP报文段。TCP首部中的目的端口号为49152,这表明应该将该TCP报文段的数据载荷部分也就是HTTP响应报文,交付给用户PC中的HTTP客户端进程。

HTTP客户端进程解析HTTP响应报文的内容,并在网页浏览器中进行显示。

这样我们就可以在网页浏览器中看到web服务器所提供的首页内容了。

总结

5.3 UDP和TCP的对比

具体内容如下。

TCP/IP体系结构应用层中的某些协议,需要使用运输层的TCP提供的服务,而另一些协议,需要使用运输层的UDP提供的服务。

5.3.1 无连接和面向连接

这是因特网上的两台主机,他们在运输层使用UDP协议进行通信,纵坐标为时间。使用UDP协议的通信双方可以随时发送数据

再来看使用TCP协议的情况。使用TCP协议的通信双方在进行数据传输之前,必须使用三报文握手来建立TCP连接

### 计算机网络教学资料与方法 #### 教学目标设定 为了有效教授计算机网络这门课程,教师应当明确教学目标。这些目标不仅应包括理论知识的理解,还应该注重实践技能的培养。例如,在讲解计算机网络的概念时,可以从最基本的定义出发——即一些互相连接的、自治的计算机的集合[^4]。 #### 理论知识点覆盖 在具体授课过程中,建议按照章节逐步深入介绍各个主题。比如在网络基础部分,可以先解释什么是计算机网络及其重要特性;接着探讨不同类型网络的特点以及它们之间的区别,像局域网(LAN)、广域网(WAN),还有特别提到因特网作为全球最大的计算机网络实例[^3]。 #### 实践环节设计 除了课堂讲授外,增加实验操作是非常必要的。通过实际搭建小型局域网环境来帮助学生更好地理解抽象概念。例如设置路由器配置练习或是模拟企业级网络架构项目等实践活动能够极大地提高学习效果。 #### 资源推荐 针对想要深入了解该领域并准备考研的学生来说,《考研科大教书匠计算机网络》一书中提供了详尽的知识体系构建指南及复习要点总结[^1]。此外,还可以利用在线平台获取更多优质资源,如MOOC上的相关视频教程或GitHub中的开源案例研究材料。 ```python # Python代码示例:简单实现TCP/IP协议栈模型 class ProtocolStack: def __init__(self, name): self.name = name def send(self, data): print(f"{self.name} is sending {data}") tcp_ip_stack = ProtocolStack('TCP/IP') tcp_ip_stack.send('Hello Network!') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值