计算机网络复习————概述,应用层,传输层

绪论

概述

什么是网络?
网络是对系统的抽象,像是成千上万的人群,蚁群等等。各个领域中存在不同的网络,经济网络,生物网络,信息网络,人脑神经元网络,交通中地铁,公交网络。
网络帮助研究各个个体之间的关系,方便理解各个系统的复杂性。
因特网:
成千上万的计算设备互联组成的系统,这些计算设备有计算机,服务器,统称为主机。连接链路有多种:有线,无线的,光纤等等。
**协议:**是计算机网络组成的重要部分。

  • 制定数据报的格式
  • 执行什么动作
  • 网络中交换信息的规则的集合。
    三要素:语法,语义,同步。
    拓扑结构:
    星形:单点故障,中心节点负荷大,
    树形:星形的集连
    总线:分布式结构,需要竞争总线使用,两个以上发送容易出现冲突。
    网状网:复杂交错,星形的集合。
    环形:只能向一个方向发数据。
    因特网的组成
    网络边缘(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^4-1)* 4个字节
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设为原来的一半,阈值也变成一半。

猜你喜欢

转载自blog.csdn.net/yunlong_G/article/details/108107320