计算机网络(自顶向下)复习
计算机网络和Internet
-
Internet层次型网络架构
-
数据交换技术
-
电路交换:在发送方和接收方建立一条连接(电路)。路径上的交换机都在维护该连接状态。预留带宽。发送方可以以确保的恒定速率发送数据。没有路由决策。
优点:不会发生拥塞,保证带宽、延迟。
缺点:线路中一个节点发生故障时,通过该节点所有的电路信息全丢失。
-
分组交换:将长的报文划分为较小的数据块(分组packet),每个分组都通过通信链路和分组交换机(路由器和链路层交换机)。分组交换机使用存储转发机制(在开始向输出链路传输分组的第一个比特前,必须接受整个分组)。
优点:允许多用户同时使用网络,适合大量数据,比电路交换简单有效。提供更好的宽带共享。
缺点:可能会出现网络拥塞,数据包延迟或丢失。
-
-
吞吐率(throughput)、延迟(delay)、丢包率(loss rate)的含义及计算。
- 总延迟 = 处理延时+ 排队延时 + 传输延时(L/R 分组长度/传输速率)+ 传播延时(连个节点间的物理距离有关 d/s)
- 丢包率 = 丢包数 / 总传输数
- 吞吐率: 单位时间内传输的bit数 N/T ,通常在接收端计算
-
计算机网路协议栈分层设计方法,每层名称、主要功能、对应层主要协议
![]()
协议的分层具有概念化和结构化的优点。模块化使得更新系统组件更为容易。
- 应用层: 优化网络性能,面向用户提供端到端的网络服务(HTTP、FTP、SMTP)——报文 message
- 传输层:两台主机进程之间的通信(TCP,UDP)逻辑链路——报文段 segment
- 网络层:两台主机端系统之间,转发路由(IP)——数据报 datagram
- 链路层:从一个运输节点到另一个运输节点(Ethernet,802.11 WiFi,CDMA、TDMS)——帧 frame
- 物理层:每一个比特,讲数字型号转换成模拟型号(光/电)型号。
应用层
-
应用层在网络协议栈中的位置及主要功能
最上层:设计协议优化性能,为用户提供常用的应用程序,面向用户实现网络服务的各种功能
-
应用层协议的两种架构:C/S、P2P
- P2P(对等传输)的缺点:文件管理、用户参与。优点:自扩展性、成本有效的。
- P2P 所面临的挑战:ISP友好,“非对称的”的带宽,下载比上传多的多;安全性,高度分布和开放;激励,需要用户资源的想应用提供带宽、存储和计算资源。
-
⭐ HTTP协议设计基本原理,两种工作机制:持续性(persistent)和 非持续性(non-persistent)的传输延迟的性能分析。
- HTTP定义了报文的结构,以及客户端和服务器进行报文交换的方式。
- 非持续的HTTP:
- 持续的HTTP:
-
HTTP报文格式:
![]()
- 用表单生成的请求报文不是必须使用POST方法,HTML表单经常使用GET方法,并在(表单字段中)所请求的URL中包括输入的数据。如www.baidu.com/animalsearch?monkeys&bananas 。
- HEAD方法:当服务器收到HEAD方法请求时,将会用一个HTTP报文进行响应,但是不返回请求对象。通常被程序开发者用来调试跟踪。
- PUT方法:与发行工具联合使用,允许用户上传对象到指定的web服务器。
- DELETE方法:允许用户或应用程序删除web服务器上的对象。
-
HTTP响应报文:
![]()
-
Last-Modified:首部行指示对象创建或者最后修改的日期和时间。
-
Date:服务器产生并发送该相应报文的日期和时间
-
常见的状态码:
状态码 名称 内容 200 OK 信息再返回的响应报文中 301 Moved Permanetly 请求的对象被永久转移,新的URL再响应报文的Location首部行中。 400 Bad Request 通用差错代码,指示请求不被服务器理解 404 Not Found 请求的文档不在服务器上 505 HTTP Version NotSupported 服务器不支持请求报文的HTTP协议版本
-
-
cookie:
-
Web缓存(代理服务器)
-
DNS采用分布式数据库的原因。DNS的两种查询方式:递归查询(recursive queries)和迭代查询(iterated queries)
-
DNS(域名系统协议):是一种分布式网络目录服务,主要用于域名于IP地址的相互转换,以及控制因特网的电子邮件的发送。
-
正向:ip查询域名。
-
反向:域名查询ip
-
分布式:可扩展性强,分流,便于维护、扩展。
-
迭代查询
![]()
-
递归查询
![]()
-
资源记录(Name,Value,Type,TTL)
-
传输层
-
运输层在网络协议栈中的位置和主要功能。
- 第二层。传输层提供了主机应用程序之间的端到端的服务,基本功能:
- 进程间的逻辑通信
- 数据的分割与重组
- 按端口号寻址
- 连接管理
- 差错控制和流量控制,纠错
- 向会话层提供可靠的数据传输服务RDT,避免报文的出错、丢失、延迟、乱序、冗余、差错等问题
- 主要协议:TCP、UDP
- TCP:可靠的数据传输,流量控制,拥塞控制,资源预留。不能提供:定时、最小吞吐量、安全性。
- UDP:要求速度,不可靠,无连接状态,首部开销小。
- TCP、UDP都不能保证 delay 和 bandwidth
- 第二层。传输层提供了主机应用程序之间的端到端的服务,基本功能:
-
UDP
- 报文结构
![]()
- 检验和:对UDP报文中所有的(伪首部+UDP首部+UDP数据)16比特字的和进行反码运算,求和遇到溢出进行回卷。
-
停等协议:A发送后收到B的回复再发送下一个,一段时间没收到则重传。如果B收到重复的则丢弃(编号,0和1)。适用于短距离传输。
![]()
-
GBN
-
当接收方检测出失序的信息后,要求发送方重发最后一个正确接受的信息帧之后的所有未被确认的帧。或者当发送方发送了n个帧后,若发现该n帧的前一帧在计时器超时区间内仍未返回其确认信息,则该帧被判定为出错或丢失,此时发送方不得不重新发送该出错帧及其后的n帧。
优点:实现简单
缺点:资源浪费
![]()
0,1号数据包成功发送,再次接收时不是二号数据包一律丢弃(接受窗口大小只有1),超时后发送端重新发送1号后面的所有包。
-
-
SR(选择重传):接受者单独确认所有正确收到的数据包,发送方只需重发未收到ACK的包。
优点:效率高
缺点:接收端需要更大的缓存
![]()
-
TCP
- 报文段结构:
![]()
-
TCP 把数据看成一个无结构的,有序的字节流。
-
![]()
-
超时值设定:比RTT长,设置太短,过早超时,产生不必要的重传;设置太长,对丢包的反映过慢。
-
估算RTT:
![]()
DevRTT(RTT偏差):
![]()
-
TCP流量控制、拥塞控制、慢启动
- 快速重传:超时机制会增加端到端的延时。所以当接收方没有收到期望的序号,收到的序号大于期望的按序的报文段,接受方就会发送接收到的最后一个按序的数据的序号。惊醒重复确认(即产生一个冗余的ACK)。如果TCP发送方收到3个冗余ACK,说明已经被确认过3次的报文段之后的报文端已经丢失。收到3个冗余ACK,TCP就执行快速重传。立即重传丢失的报文段。
- 流量控制:用以消除发送方使接收方缓存溢出的可能性。通过让发送方维护一个接收窗口 rwnd 的变量来提供流量控制。全双工通信接收方发送方都需要维护。接收方将cwnd放入报文中发送给发送方。初始时 cwnd = ReceiveBuffersize
- 拥塞控制(慢启动,拥塞避免,快速恢复):发送方增加传输速率(窗口大小),探测可用带宽,直至发生丢失。
- 慢启动:当连接开始时,以指数方式增加速率。慢启动结束存在三种方式:1。当存在一个超时指示的丢包事件(拥塞),TCP发送方将cwnd设置为1并重新开始慢启动。同时还将第二个状态变量的值ssthresh 设置为cwnd/2,2。当cwnd到达或者超过ssthresh的值时,不能继续指数式增长,此时TCP转移到拥塞避免状态,cwnd每次+1MSS。3。检测到3个冗余ACK,这时TCP执行一次快速重传,并进入快速恢复状态。
- 拥塞避免:当cwnd到达上次遇到拥塞时的值的一半(ssthresh),采取较为保守的方式,每个RTT只将cwnd的值增加一个MSS。当有超时(丢包)出现时,更新ssthresh=1/2cwnd,cwnd=1MSS。当收到3个冗余ACK时,TCP cwnd = cwnd/2 + 3MSS 。ssthresh = cwnd/2。进入快速恢复阶段。
- 快速恢复:对每个收到的冗余的ACK,cwnd的值增加一个MSS。在降低了cwnd后进入拥塞避免状态(+1)。出现超时事件时,更改cwnd ssthresh后进入慢启动。
-
TCP连接管理
-
建立连接:三次握手
- 第一次握手:建立连接时,客户端发送SYN数据包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认。
- 第二次握手:服务器收到SYN包,确认客户端的SYN(ACK=x+1),同时置SYN,seq=y。进入SYN_RECV状态。
- 第三次握手:客户端收到服务器的SYN+ACK,向服务器发送ACK=y+1,置SYN为0,seq=x+1,客户端和服务器进入ESTABLEISHED状态,完成三次握手
![]()
-
拆除连接:四次挥手
- 客户端发送一个FIN,用来关闭客户到服务器的数据传送,seq=x
- 服务器收到FIN,发挥一个ACK,ACKnum=x+1
- 待数据传送完毕后,服务器关闭连接,发送一个FIN,seq=y
- 客户端发回ACK,ACKnum=y+1
![]()
服务器的FIN和ACK分开发送的原因:建立连接时,因为服务端的 LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发 送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文 多数情况下都是分开发送的。
-
网络层-数据平面
-
网络层在协议栈中的位置、提供的服务及主要功能
-
网络层:第三层。
-
功能:转发:将数据包从源路由运送到目标路由
路由:确定数据包有源路由如何运送到目标路由
-
提供服务:如果提供的是无连接的服务,那么所有的数据包(数据包通常又被成为数据报)都被独立地注入到网络中,并且每个数据包独立路由,不需要提前建立任何设置。这样的服务成为数据报服务,对应的网络为数据报网络。
虚电路:如果提供面向连接的服务,那么在发送数据包之前,必须首先建立起一条从源路由器到目标路由器之间的路径。这个连接称为虚电路,类似于电话系统中建立的物理电路,对应的网络称为虚电路网络。
-
-
数据包格式:
![]()
-
IPv4地址CIDR表示方法、子网、子网掩码
-
子网为了确定网络区域,分开主机和路由器的每个接口,从而产生了若干个分离的网络岛,接口端连接了这些独立网络的端点。这些独立的网络岛叫做子网。可以物理到达对方而无需介入路由器。
-
子网掩码:用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。
-
CIDR:地址格式:a.b.c.d / x,其中x是地址的子网部分中的#位。/x为子网掩码
![]()
-
NAT:网络地址转换,多个上网设备分享同一个外部ip地址。允许一个整体机构以一个公用IP地址出现在Internet上。
![]()
-
动机:就外部世界而言,本地网络仅使用一个IP地址:
ISP不需要的地址范围:所有设备只有一个IP地址
可以在不通知外界的情况下更改局域网中设备的地址
可以更改ISP而无需更改本地网络中设备的地址
本地网络中的设备无法明确寻址,外界可以看到(安全性优先)
-
工作原理:
NAT路由器必须传出数据报:将每个传出数据报的源IP地址和端口号替换为NAT IP地址和新端口号。
远程客户端/服务器将使用NAT IP地址和新端口号作为目标地址进行响应。
记住(在NAT转换表中)每个源IP地址和端口号到NAT IP地址和新端口号转换对。
传入数据报:将每个传入数据报的dest字段中的NAT IP地址和新端口号替换为存储在NAT表中的对应的源IP地址和端口号
![]()
-
-
DHCP:
![]()
- 发现
- 提供
- 请求(从可能的多个提供的报文中选择一个)
- ACK
-
-
ICMP
网络层-控制平面
数据链路层
-
链路层负责物理相邻节点之间的数据传输。
-
数据链路层在网卡(NIC,Network Interface Card)中实现,时操作系统的外部设备。一个路由器有几个接口,就有几个链路层的实现,帧的结构也可能不同。
-
流量控制:两个node之间发送和处理速率不匹配
-
错误检测:奇偶校验,检验和
-
错误纠正:增加信息,发送方无需重新传输即可识别并纠正错误
-
半双工和全双工:使用半双工时,链路两端的节点都可以传输,但是不能同时传输。
-
Mutiple Acess Links(MAC协议--资源竞争规则)
按工作方式进行分类:信道划分,随机接入,轮流协议
-
MAC协议本质时链路共享,解决共享一条链路的多个网络节点如何竞争使用链路的问题
-
MAC协议需要实现用户的公平性。即对理想的MAC协议,如果有N个共享用户,则每个用户竞争到的平均带宽为1/N
-
channel partitioning(信道划分):没有碰撞,但是资源浪费,可以从事件,频率和广播上划分
-
TDMA:时分多址,每个站在每个回合中获得固定长度的时隙(长度=数据包传输时间),未使用的插槽变为空闲。
![]()
-
FDMA:频分多址,信道频谱分为频段,每个站分配固定频段,频带中未使用的传输时间变为空闲
![]()
-
-
Random access 随机接入(ALOHA/slotted ALOHA/CSMA):
-
当节点获得新帧时,在下一个时隙发送
如果没有冲突:节点可以在下一个时隙中发送新帧
如果冲突:节点使用概率p在每个后续时隙中重新传输帧,直到成功
-
![]()
最大效率:1/e = 37%
-
Pure ALOHA :当帧到达时立即传输,不分时系,不用在节点之间同步。
![]()
成功发送概率:\(p*(1-p)^(N-1)*(1-p)^(N-1)\)成功发送概率降低
最大效率:1/2e = 0.18
-
CSMA(波载侦听多路——以太网):传输之前先监听,当监听到信道空闲时发送数据包,当信道忙时延迟发送数据包。仍可能发生冲突:传播延迟使两个结点可能听不到对方的传输。
-
CSMA/CD(collision detection):如果NIC感测到信道空闲,则开始帧传输。如果NIC感测到信道繁忙,请等到信道空闲后再发送。如果NIC传输整个帧而未检测到其他传输,则完成传输帧。若在传输中检测到冲突则立即停止传输,采用二进制回退算法,随机退避一定时间(算法效率高)。
-
-
轮流协议
-
-
ARP:地址解析协议,把ip地址转化为MAC地址。ARP的适用范围是同一个子网(局域网)。
- ARP表:LAN上的每个IP节点(主机/路由器)都有表,<IP;MAC;TTL>
- 每台主机都会在自己的ARP缓冲区建立一个ARP表,一表示IP地址和MAC地址的对应关系。
- 当源主机需要将一个数据包发送到目标主机时,会首先检查自己的ARP列表中是否存在该IP地址对的MAC地址。
- 如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询词主机对应的MAC地址。
- 此ARP请求数据包中包括源主机IP、源MAC地址、以及目标主机的IP地址。网络中的所有主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址保持一致。
- 如果不相同,就忽略此数据包;如果相同,该主机先将发送端的MAC地址和IP地址添加到自己的ARP列表中。
- 如果ARP表中已经存在该IP信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址。
- 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始传输。
- 如果源主机一种没有收到ARP响应数据包,表示ARP查询失败。
-
交换机的自学习过程:多个同时传输,交换机不知道哪个端口连接哪个设备。
- 在接收到帧时,交换机可以“学习“发送发的位置。只要有发言,就会有记录。
- 交换机的学习功能,是指交换机对MAC地址表的更新具有自主学习新的MAC地址,并建立相对应的MAC地址表的功能。
- 当一个交换机开机,首先地址中除了静态绑定的意外,MAC地址表是空的。
- 当交换机开始工作时,收到一个MAC地址表中不存在的MAC数据帧,他将不知道如何转发,从哪个端口转发,所以就会有一个ARP的过程,通过ARP后交换机能找到该数据从哪个端口转发出去,此时,交换机还会记录下这个帧的MAC地址与收到该帧的端口信息。新增一条MAX地址表条目。
-
802.11
-
CSMA/C(collision)A(voidance):如果感知到信道空闲了一段时间(DIFS),再发送完整的数据;如果感知信道繁忙,随机向后推延,超时,继续推迟。如果收到ACK(过一段时间SIFS)
![]()
Collision Avoidance:
RTS:小的数据帧,请求信道
CTS:回应
![]()
cost:增加了时延,降低效率。
-
隐藏终端
-
stop and wait
-
多媒体网络
-
延迟抖动(Delay Jitter):因为每个包传输用时不一样(数据包延时的差异)。文件传输没有,video/audio接收方播放需要等间隔。
解决办法:缓冲Buffer CBR,平滑DelayJitter
cost:初始需要一段时间来缓存。
-
Streaming multimedia:UDP -> HTTP(加大delay问题)
-
DASH:动态,自适应的流媒体over HTTP
将video文件分成小块,不同的编码。客户端自适应带宽选择相关的码率。
-
Content distribution networks(CDN):将CDN服务器放置在接入网络中。
- 优点:靠近用户,delay小。面临的问题和P2P相似
-
Voice-over-IP(VoIP):skype。对loss(play out buffer)和delay都有一定的包容。
-
Forward Error Correction(向前纠错):
后一个数据包携带前一D个数据包的重要信息。增加了冗余,消耗带宽
![]()
-
Interleaving(交织):
拆分包,分包,cost delay
![]()
| 交换机(二层) | 路由器 | |
|---|---|---|
| 工作层次 | 数据链路层(第二层) | 网络层(第三层) |
| 转发依据 | MAC地址(物理地址) | IP地址(网络地址) |
| 功能 | 组建局域网 | 连接组建好的局域网,或接入Internet |
| 不能分割广播域 | 可以 | |
| 转发不需要修改数据帧 | 转发需要修改TTL、IP头部校验和,重新封装 | |
| 硬件处理、速度快 | 软件处理、工作复杂 |
套接字:传输层连接的两个端点叫套接字(通信端点)。端口号拼接到ip地址构成了套接字。如
(127.0.0.1:80)
RTT:一个段分组从客户端到服务器然后再返回客户端所花费的时间(包括了所有时延)




























浙公网安备 33010602011771号