计算机网络复习————概述,应用层,传输层
计算机网络复习
绪论
概述
什么是网络?
网络是对系统的抽象,像是成千上万的人群,蚁群等等。各个领域中存在不同的网络,经济网络,生物网络,信息网络,人脑神经元网络,交通中地铁,公交网络。
网络帮助研究各个个体之间的关系,方便理解各个系统的复杂性。
因特网:
成千上万的计算设备互联组成的系统,这些计算设备有计算机,服务器,统称为主机。连接链路有多种:有线,无线的,光纤等等。
**协议:**是计算机网络组成的重要部分。
- 制定数据报的格式
- 执行什么动作
- 网络中交换信息的规则的集合。
三要素:语法,语义,同步。
拓扑结构:
星形:单点故障,中心节点负荷大,
树形:星形的集连
总线:分布式结构,需要竞争总线使用,两个以上发送容易出现冲突。
网状网:复杂交错,星形的集合。
环形:只能向一个方向发数据。
因特网的组成
网络边缘(network edge):主机和应用
网络核心(network core):路由器
接入网络(access network):连接主机的路由器的部分网络
交换技术
如何分配资源,主要分为两种
电路交换(circuit switching)
最先在固定电话中应用。建立连接,独占资源。
切分资源方法,分为FDM(频分),TDM(时分),电台广播就是使用频分,我们不同的时间上不同的课就类似于时分。
分组交换(packet switching)
电路交换中,固定分配资源会造成利用率不高,资源浪费。分组交换采用按需分配, 但是容易产生冲突。采用方式是存储转发。
资源共享,不需要建立连接,更简单,但是可能会有丢包和延时。
网络性能指标
常用的延时(delay),丢包(paket loss),吞吐量(throughput)
延时:
为什么会有延时?发送的速率比传输的快。
延时 = 节点延时 + 排队延时 + 发送延时(传输延时)+ 传播延时
节点延时一般很小
排队延时是主要组成部分
发送延时(transmission delay) = 包的大小/带宽 就是发一个数据多长时间
传播延时(propagation delay) = 距离/传播速率
** 丢包:**
排队的队伍过长,
丢包率 = 丢掉的除以总的数量
到达率 = 到达的除以总的数量
吞吐量:
平均吞吐量:总的量除以总的时间。
瓶颈带宽,最小的带宽,能承受的最大的速率。
- 网络中传送比特的速率是一样的
- 网络中没有并行这一说,都是串行的
宽带和窄带的区别,比特之间的间隔不同,间隔短的是宽带,间隔的大的是窄带。
协议栈
模块化,层次化的思路解决复杂系统。
互联网五层协议栈:
TCP/IP映射到OSI形成五层模型
层数 | 名称 | 作用 | 处理对象 |
---|---|---|---|
第五层 | (application) 应用层 | 运行网络应用程序 | 报文 |
第四层 | (transport)传输层 | 进程到进程的数据传输 | 报文段 |
第三层 | (network)网络层 | 主机到主机数据传输 | 数据包 |
第二层 | (link)数据链路层 | 相邻节点数据传输 | 帧 |
第一层 | (physical)物理层 | 传输比特流 | 比特 |
应用层
应用体系架构
CS架构
客户端与服务段连接,客户端与客户端不能直接连接,服务器必须长期待机,固定的ip地址。
p2p
某一个节点既可以是客户端又可以是服务器,任意节点之间可以相互通信。
典型应用,skype中通信的过程。
一些概念:
进程通信:计网中关注不同主机的不同进程的通信。
套接字:进程发送报文的门
ip 地址 端口号 标识进程。
Web和HTTP
web由多个对象组成,可以是html文件,图片或者音频。
HTTP超文本传输协议,下载url的文件到本地,然后展示出来,基于TCP。
HTTP是无状态的,建立连接有两种方式:
非坚持的(nonpersistent):
建立连接,客户级发送一个请求,获得回复,关闭连接。每一次获得一个对象,大约花费两个RTT时间。
坚持的(persistent):
建立连接,发送请求,获得回复,如果还有对象未获得继续发送请求,比非坚持的花费时间少。
cookie:
缺陷:cookie有隐私问题
web缓存器
这就类似于机组中的cache,在就直接返回,不在就从原始服务器请求,接收后返回。这里还有一个更新的问题,如果原始服务器的数据更新了,代理需要重新请求。所以代理接收请求时会向原始服务器发送请求看内容是否已经更新。
FTP和SMTP
**FTP:**文件传输协议,基于TCP,不允许丢包。
需要建立两条连接,port21 传送连接信息,port20 用来传数据。一次只能传一个对象。(非坚持连接)
**SMTP:**邮件传输协议,默认端口25。基于TCP,不允许丢包。推的一个过程
mail server握手,传邮件,关闭连接。
POP,IMAP,Web 来收邮件。
DNS
ip地址标识主机,但是不好记。主机名和ip地址的映射,由DNS来完成。既是应用,也是应用层的协议。运行在UDP之上默认53端口。
功能:
- 主机名到IP地址的转换
- DNS是为因特网上的用户应用程序以及其他软件提供一种核心功能,即将主机名转换为它们下面的IP地址。
- DNS(域名系统)由DNS服务器和一个允许主机查询分布式数据库的应用层协议组成。
- 除了主机名到IP地址的转换外,DNS还提供主机别名、邮件服务器别名、负载分配等服务。
无论是哪种请求都是从跟域名,顶级域名,再到权威域名一步步翻译的。
p2p应用
资源共享,节点间直接相连,没有控制中心,网络是动态的。
好处:
- 可扩展性
- 可靠性
- 易于管理
- 动态性
- 传输文件快
问题: - 自私性:只下载不上传,上传无用
- 可信性:判断哪些信息是可信的
BitTorrent
p2p模式下的文件下载,一个应用,一个协议。
top4策略:发给传的比较多的四个,随机给其他节点传数据,避免新节点没有办法获取到数据。
下载稀缺资源。
传输层
传输层服务
发送端把报文打包成报文段,传到网络层,接收端,去掉首部,获得报文传给应用层。负责进程之间的通信。两个主要协议TCP,UDP。
UDP
UDP 用户数据包协议,不可靠,无连接,可能丢包,乱序。
选择原因:
- 不存在连接时的延时
- 不需要保存连接的信息
- 报文段较小
- 不调节发送端发送的速率
DNS,SNMP基于UDP,存在重复操作的往往时允许丢包的。
首部4个字段,64比特,8个字节,远端口,目的端口,长度2^16-1,校验和。
校验和:通过将段内容处理为16比特整数序列,段内容的加法(反码和),发送方将检查和放入UDP检查和字段
注意:差错检测不是百分之百准确。
可靠数据传输
解决两个问题
- 比特差错,0-1错误
- 丢包
Rdt1.0: 经可靠信道的可靠传输
发送端:不断的发,等待要发的数据
接收端:不断的收,等待接收
Rdt2.0: 具有比特差错的信道
发送端:等待调用,不断的发,等待ACK或者NAK
接收端:不断的接收,返回ACK或者NAK
如果没有反馈,发送端会一直发,造成冗余数据包
rdt2.1: 接收方,处理受损的ACK/NAK
处理冗余:
发送方对每个分组增加***
如果ACK/NAK受损,发送方重传当前的分组
接收方丢弃(不再向上交付)冗余分组
rdt2.2: 发送方, 接收方片段
与rdt2.1一样的功能,仅使用ACK
代替NAK,接收方对最后正确接收的分组发送ACK
接收方必须明确地包括被确认分组的序号
在发送方冗余的ACK导致如同NAK相同的动作:重传当前分组
rdt3.0: 具有差错和丢包的信道
处理丢包: 发送方等待ACK一段“合理的”时间
如在这段时间没有收到ACK则重传
如果分组(或ACK)只是延迟(没有丢失):
重传将是冗余的,但序号的使用已经处理了该情况
接收方必须定义被确认的分组序号
需要倒计时定时器
流水线协议
rdt3.0停等协议,性能不太好。1Gbps 链路, 15ms传播时延,8000bit 数据报
利用率 = (8/10^-9 ) / (15*2+8*10^-9) = 0.00027
传输第一个后接连传输一部分数据报,就是说在未获得ACK之前继续传送。
回退N(go-back-N)
流水线协议,窗口大小,允许未接收ack发送的数据包个数。
发送端:获得一个数据包,如果在窗口里面就可以发出去,否则等待。
接收端:累计确认,ACKn表示n以及以前的数据包都已经正确收到。希望收到N+1的数据包
只有一个计时器,如果超时,窗口大小个数的数据包都重传
选择重传
每一个数据包有一个单独的定时器,只重传未收到的数据包,ACKn表示数据包n已经收到。
可靠性传输中名词用途总结
TCP报文段格式
TCP点对点的,UCD支持一对多。
TCP,流水线型,把数据包进行字节传输,面向连接。
首部开销至少20个字节,首部长度4位,单位是4个字节,表示协议的首部长度范围是0~2^5-1个字节
ACK在确认接收时置1,SYN,FIN关闭时置0
***seq:每一个字节给一个编号,数据包中字节最小的***,初始值,随机确定的。
确认号ack:期望收到的***,或者已经收到了n-1和之前的所有数据包。
TCP可靠数据传输
流水线型协议,累计确认,类似回退N。重传:冗余ACK,超时。但是重传只重传编号最小的数据包。
发送端:收到一个数据包,对每一个字节标号,判断编号是否在窗口里,然后发出去,开启定时器,重传只重传编号最小的数据包,收到一个ACK,窗口右移。
快速重传
收到了3个冗余的ACK立即重传。(在计时器超时之前重传)
流量控制
通过调节发送端发包速率,避免接收端缓存溢出。其实通过发送端窗口的大小。
接收方在报文段接收窗口字段中通告其接收缓冲区的剩余空间,发送方要限制未确认的数据不超过RcvWindow
TCP连接管理
TCP是面向连接的,建立连接时三次握手的过程。
三次握手:
- 步骤 1: 客户机向服务器发送 TCP SYN报文段
指定客户端初始序号
没有数据但占用一个*** - 步骤 2: 服务器收到SYN报文段, 用SYNACK报文段回复
服务器为该连接分配缓冲区和变量
指定服务器初始序号 - 步骤 3: 客户机接收到 SYNACK, 用ACK报文段回复,可能包含数据,前面两个没有数据,不占用***
关闭连接(双向关闭):
- 步骤 1: 客户机向服务器发送TCP FIN控制报文段,占用一个***
- 步骤 2: 服务器收到FIN,用ACK回答。关闭连接,发送FIN
- 步骤 3: 客户机收到FIN, 用ACK回答 ,进入 “超时等待” – 将对接收到的FIN进行确认
- 步骤 4: 服务器接收ACK,连接关闭
拥塞控制
拥塞主要原因:太多的数据源发送到网络。
通过调节发送端发包速率,防止路由器的缓存溢出。
问题:造成延时,资源浪费,丢包。
解决方案:网络服务,端到端的。
TCP的拥塞控制机制
端到端的拥塞控制,调节拥塞窗口大小。去流量控制和拥塞控制窗口的最小值。
MSS(最大报文段大小):指的是报文段里允许最大data的大小
指数增加,到达阈值线性,丢包冗余ack减半。
- 当连接开始的时候,速率呈指数式上升,直到第1次报文丢失事件发生为止,
- 当CongWin < Threshold时,发送者处于慢启动阶段, CongWin指数增长
- 当CongWin > Threshold时,发送者处于拥塞避免阶段, CongWin线性增长
- 当出现3个冗余确认时, 阈值Threshold设置为CongWin/2,且CongWin设置为Threshold
- 当超时发生时,阈值Threshold设置为CongWin/2,并且CongWin设置为1 MSS.
4时刻蓝色曲线到达阈值,线性增长,8时刻超时,CongWin设为1MSS,阈值变为原来的一半,开始指数增长,如果8时刻发生冗余ack,则CongWin设为原来的一半,阈值也变成一半。