计算机网络运输层和应用层

本文深入探讨计算机网络的运输层和应用层。在运输层,重点讲解了TCP的可靠传输实现,包括滑动窗口、流量控制和拥塞控制策略,如慢开始、快重传和快恢复。同时,介绍了TCP连接的建立与释放的三次握手和四次挥手过程。在应用层,重点关注域名系统DNS的工作原理,包括域名结构、域名服务器类型和DNS查询的递归与迭代方式。

一,计算机网络运输层

一、TCP 可靠传输的实现

1、TCP的滑动窗口以字节为单位

2、窗口越大,发送方就可以在收到确认之前发送更多的数据,传输效率高,但是接收方必须来的及接收。

3、 窗口的分类:发送窗口,可用窗口,未确认窗口

4、 A 的发送窗口并不总是和B 的接收窗口一样大(因为有一定的时间滞后)。

5、TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。

6、缓存和窗口的关系:缓存一般大于窗口

7、发送缓存与接收缓存的作用

发送缓存用来暂时存放:

发送应用程序传送给发送方TCP 准备发送的数据;

TCP 已发送出但尚未收到确认的数据。

接收缓存用来暂时存放:

按序到达的、但尚未被接收应用程序读取的数据;

不按序到达的数据。

8、超时重传时间的选择: RTO RTTS + 4 RTTD

平均往返时间

新的RTTS (1 ) (旧的RTTS) (新的RTT 样本)

0 1推荐=0.125

RTT 的偏差的加权平均值

新的RTTD = (1 ) (旧的RTTD) + RTTS新的RTT 样本

推荐=0.25

9、如何判定一个确认报文段是对原来的报文段1 的确认,还是对重传的报文段2 的确认?

采用Karn算法:在计算平均往返时间RTT 时,只要报文段重传了,就不采用其往返时间样本。

修正的Karn算法:报文段每重传一次,就把RTO 增大一些:

10、选择确认sack是解决:接收方收到了和前面的字节流不连续的两个字节块,怎样让发送方只发送没有到达的数据段

11、使用SACK时要将TCP首部中的SACK位置1,然后再选项字段填入未接受到的断块的边界值,每个边界值占4个字节,确定一个断块要用两个边界值,所以选项字段最多只能指明4个字节块的信息。另外还要一个选项指明是SACK选项,一个指明SACK占用的字节数
二、TCP 的流量控制:利用滑动窗口实现流量控制

1、流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。

2、丢失报文导致互等死锁的解决办法:持续计时器

TCP 为每一个连接设有一个持续计时器。

只要TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。

若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。

若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。

若窗口不是零,则死锁的僵局就可以打破了。

3、发送方的发送窗口不能超过接收方给的接收窗口的数值,TCP窗口的单位是字节。

4、考虑到传输效率,要解决TCP 报文段的发送时机的选择:

长度限制:第一种机制是TCP 维持一个变量,它等于最大报文段长度MSS。只要缓存中存放的数据达到MSS 字节时,就组装成一个TCP 报文段发送出去。

自己要求:第二种机制是由发送方的应用进程指明要求发送报文段,即TCP 支持的推送(push)操作。

时间限制:第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过MSS)发送出去。

三、TCP的拥塞控制

1、在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞,即资源需求>可用资源

2、拥塞控制与流量控制的关系:

拥塞控制是一个全局性的过程,就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。

流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

3、拥塞控制要解决好网络吞吐量与负载的关系

4、几种拥塞控制方法:慢开始和拥塞避免,快重传和快恢复

5、发送方维持一个叫做拥塞窗口cwnd的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于或小于拥塞窗口。

6、发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,发送更多的分组。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。

7、“拥塞避免”不能完全避免拥塞,只是说在拥塞避免阶段把拥塞窗口控制为较多按线性规律增长,使网络比较不容易出现拥塞。

8、快重传算法:快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认。这样做可以让发送方及早知道有报文段没有到达接收方。发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。

9、快恢复算法:当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限ssthresh减半,然后执行加法增大。这是因为三个确认报文能够到达发送端,网络很可能没有拥塞

10、发送窗口的上限值 Min [rwnd, cwnd] 接收方窗口rwnd和拥塞窗口cwnd

四、TCP 的运输连接管理

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

2、TCP 连接的建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client)。被动等待连接建立的应用进程叫做服务器(server)。

3、TCP用三次握手建立连接:A表示发送方,B表示接收方

(1)A 的TCP 向B 发出连接请求报文段,其首部中的同步位SYN = 1,并选择序号seq = x,表明传送数据时的第一个数据字节的序号是x。

(2)B 的TCP 收到连接请求报文段后,如同意,则发回确认。 B 在确认报文段中应使SYN = 1,使ACK = 1,其确认号ack = x 1,自己选择的序号seq = y。

(3)A 收到此报文段后向B 给出确认,其ACK = 1,确认号ack = y 1。 A 的TCP 通知上层应用进程,连接已经建立。

4、 TCP的连接释放:四次握手释放连接。A表示发送方,B表示接收方

(1)A 把连接释放报文段首部的FIN = 1,其序号seq = u,等待B 的确认。

(2)B 发出确认,确认号ack = u 1,而这个报文段自己的序号seq = v。 TCP 服务器进程通知高层应用进程。从 A 到B 这个方向的连接就释放了,TCP 连接处于半关闭状态。B 若发送数据,A 仍要接收。

(3)若B 已经没有要向A 发送的数据,其应用进程就通知 TCP 释放连接。

(4)A 收到连接释放报文段后,必须发出确认。

5、数据传输结束后,通信的双方都可释放连接。

6、发送方确认后必须等待2MSL 的时间后才能真正释放连接理由如下:

第一,为了保证A 发送的最后一个ACK 报文段能够到达B。

第二,防止“已失效的连接请求报文段”出现在本连接中。A 在发送完最后一个ACK 报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失.

二,计算机网络应用层

一、 域名系统DNS

1、 域名系统DNS是因特网使用的命名系统,用来把人们便于使用的机器名字转换为IP地址。

2、 为什么机器在处理IP数据报时不使用域名,而要使用IP地址呢?

因为IP地址的长度固定为32位,域名长度不固定,机器处理起来比较困难。

3、 整个因特网为什么不只使用一个域名服务器?

因为整个因特网规模很大,一台服务器会因为负载太大无法正常工作,一旦出错,整个因特网就瘫痪了。

4、域名服务器:名字到 IP 地址的解析是由若干个域名服务器程序完成的。运行域名服务器程序的专设结点的机器称为域名服务器。

5、DNS请求报文是UDP数据报

6、域名:任何一个连接在因特网上的主机或路由器,都有的一个唯一的层次结构名字

7、域名的结构由标号序列组成,各标号之间用点隔开:

… . 三级域名. 二级域名. 顶级域名

8、域名只是个逻辑概念,并不代表计算机所在的物理地点。

9、域名的语法:由标号序列组成,用.分开,每一个标号不超过63字符,完整域名不超过255个字符,标号中除了-不能有其他标点符号

10、域名只是个逻辑概念,并不代表计算机所在的物理地点。

11、顶级域名TLD

(1) 国家顶级域名nTLD:如: .cn表示中国,.us 表示美国,.uk表示英国,等等。

(2) 通用顶级域名gTLD:最早的顶级域名是:

.com (公司和企业)

.net (网络服务机构)

.org (非赢利性组织)

.edu(美国专用的教育机构()

.gov(美国专用的政府部门)

.mil (美国专用的军事部门)

.int(国际组织)

(3) 基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称为反向域名。

12、 之前我国把二级域名划分为类别域名和行政区域名,现在可以直接注册

13、 域名服务器:一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射,DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区小于等于域。

14、 域名服务器有以下四种类型

(1)根域名服务器:根域名服务器是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP 地址,在因特网上共有13 个不同IP 地址的根域名服务器,是13 套装置(不是13 个机器)

(2)顶级域名服务器:这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。

(3)权限域名服务器:负责一个区的域名服务器。

(4)本地域名服务器:当一个主机发出DNS 查询请求时,这个查询请求报文就发送给本地域名服务器,也称为默认域名服务器。

15、提高域名服务器的可靠性:DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
16、主机向本地域名服务器的查询一般都是采用递归查询

17、本地域名服务器向根域名服务器的查询通常是采用迭代查询。

18、每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项
二、文件传送协议FTP

1、 FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。

2、FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

3、主进程的工作步骤如下

打开熟知端口(端口号为21),使客户进程能够连接上。

等待客户进程发出连接请求。

启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。

回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。

4、 FTP 使用的两个TCP 连接:TCP 控制连接,TCP 数据连接

5、 两个不同的端口号:熟知端口(21)用于建立TCP控制连接,20号端口用于建立TCP数据连接
6、网络文件系统NFS 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。在网络上传送的只是少量的修改数据。

简单文件传送协议TFTP

三、TFTP 是一个很小且易于实现的文件传送协议。

1、 TFTP 使用客户服务器方式和使用UDP 数据报,因此TFTP 需要有自己的差错改正措施。

2、 TFTP 只支持文件传输而不支持交互。

3、 TFTP 的主要特点:

(1) 每次传送的数据PDU 中有512 字节的数据,但最后一次可不足512 字节。

(2) 数据PDU 也称为文件块(block),每个块按序编号,从1 开始。

(3) 支持ASCII 码或二进制传送。

(4) 可对文件进行读或写。

(5) 使用很简单的首部。

4、 在一开始工作时。TFTP 客户进程发送一个读请求PDU 或写请求PDU 给TFTP 服务器进程,其熟知端口号码为69。

5、 若文件长度恰好为512 字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据PDU。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值