计算机网络
部分内容摘自CSNote和牛客
目录
一. 概论
二. 物理层
三. 数据链路层
四. 网络层
五. 传输层
六. 应用层
(一)概论
(1) 互联网的组成
(2).性能指标(专有名词)
- 速率(数据率) bit/s
- 带宽(最高数据率)最高能达到多少bit/s
- 吞吐量(实际通过的数据率)
- 时延= ①发送时延(传输时延):数据帧的第一个比特到最后一个比特
发送完毕的时间
+ ②传播时延 = 信道长度(m)/ 电磁波在信道上传播的速率(m/s)
= m /(m/s)= s(路程除以速度等于时间)
+ ③处理时延
+ ④排队时延 - 时延带宽积 = 传播时延 X 带宽
(发送的第一个比特到终点时,已经发送了多少比特,即多少个比特在链路上移动)(以比特为单位的链路长度) - RTT(Round-Trip Time)往返时间
- 利用率:① 信道利用率:百分之几的时间被利用
② 网络利用率:全网信道利用率的加权平均值
(3).网络协议的组成
(4).网络分层
OSI把对等层次之间传输的数据单位叫做该层的协议数据单元PDU(Protrol Data Unit)
层与层之间的叫做SDU(Service Data Unit)
① 实体表示可发送或接受信息的硬件或软件进程
② 协议是控制两个对等实体进行通信的规则集合
③ 协议保证了两个对等实体之间的通信,使得本层能向上一层提供服务
④ 实现协议需要使用下一层提供的服务
⑤ 协议是水平的,服务是垂直的
⑥ 两层实体交互的地方叫做服务访问点(SAP(Service Acess Point))
(二)物理层
功能:确定与传输媒体的接口有关的一些特性,提供透明的比特流传输
(1).特性:
① 机械特性:接线器形状、尺寸…
② 电气特性:电压范围
③ 功能特性:电平的电压的意义(语义)
④ 过程特性:对于不同功能的各种可能事件的出现顺序(同步)
(2).信号:
(3).有线传输介质:
(4).复用:
为了让多用户共享同一信道
(5).调制
(6).杂项
ASDL非对称数字用户线(下行(ISP到用户)>> 上行(用户到ISP))
_SDSL对称,一般企业用
HFC网,对有线电视网的改造
FFTx 光纤到户
(三) 数据链路层
提供可靠的帧传输
(1).功能
①封装成帧和透明传输
②差错检测
1.CRC
n位冗余码,M为数据,P商定好的除数,有n+1位,余数R为冗余码
M=101001
=101001000(n=3,所以补三个零)
模2运算,其实是把每一位都进行异或一下就可以了。
当接收端接收到数据后,要再进行一次CRC,如果余数为0,则没有错。
题目
①要发送的数据为11001001,采用CRC的生成多项式是P(X)=X3+X+1,则应添加在数据后面的余数为
记得补三个零,除数为4,n为4减1
②若接收方收到的二进制数字序列为1010111001100111,CRC生成多项式为X4+X2+X+1,试说明数据传输过程中是否出错(要求写出计算过程)。
没什么要注意的,算的时候仔细点就行,结果为0,传输无错
2.重传机制
(2).PPP点对点协议
接入ISP时使用,PPP协议无需支持非全双工链路
另一种可靠传输协议:高级数据链路控制协议HDLC(Highlevel DataLink Control)(已淘汰)
①将IP数据报封装到串行链路的方法
1.实现封装成帧
2.实现透明性
3.差错检测(CRC)即尾部的FCS
4.最大传送单元(不超过1500字节)
A、C保留无意义
②LCP(Link Control Protocol)
配置
③NCP
实现了多种网络层协议,使得路由器能同时支持多种网络层协议
网络层地址协商,给新接入的用户分配IP(临时IP)
④适配器(网卡)
实现了多种类型的链路,即串行和并行传输之间的切换
(3).CSMA/CD协议
CSMA/CD协议
载波监听多点接入/碰撞检测
载波监听是指不管在发送前还是发送后都要不停地检测信道
多点接入说明是总线型网络
碰撞检测即边发送边监听是否有碰撞产生
它是无连接、不可靠交付、半双工的(不能边发送边接收)
强化碰撞,即撞后广播人为干扰信号(其实一般碰撞时也会有因叠加产生的大幅电压变化)
(4).使用集线器的以太网
集线器hub的星形以太网10BASE-T,使用双绞线
“10”表示信号的传输速率为10 Mbps,“Base”表示信道上传输的是基带信号,“T”是英文Twisted-pair(双绞线电缆)的缩写。
集线器工作于物理层
(5).以太网的信道利用率
α的值应该尽可能小
结论:以太网的连线长度不能太长(分子会太大),以太网帧不能太短(T。太小)
(6).MAC层
①MAC帧
②
本站在以下情况下会收下帧,而不是丢弃:
但是如果把路由的工作方式调为混杂模式,就可以偷偷收下所有帧,这是一种监听方式
(7).扩展的以太网
使用集线器扩展
冲突域合并了,加入每个系的最大吞吐量为10Mbit/s,合并后总的依然为10Mbit/s,但是每个系分到的就只有3Mbit/s左右了。
因此我们使用以太网交换机进行扩展
以太网交换机实质为多接口的网桥,全双工,并行,连接多对接口,使每一个接口独占传输媒体,无碰撞地传输
因此不用CSMA/CD了,但是仍然保留以太网帧结构
以太网交换机的自学习功能:
(8).虚拟局域网Virtual LAN
Virtual YouTuber
Virtual LAN
每个VLAN帧都有一个明确的标识符指明发送帧的计算机属于哪个VLAN
(四) 网络层
提供灵活简单、无连接、尽最大努力交付的数据报服务
(1).IP数据报格式
片偏移
(2).ARP
用两道题目来理解ARP
①ARP是地址解析协议,简单语言解释一下工作原理。
1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。
3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。
②为什么有了Mac地址,还要IP地址
由于全世界存在着各式各样的网络,他们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转化工作,因此由用户或用户主机来完成这项工作几乎是不可能的的事。但IP编址就把这个复杂的问题解决了。连接到互联网的主机只需要各自拥有一个唯一的IP地址,他们之间的通信就像连接在同一个网络那么简单方便。
(3).ICMP
(4).IGMP
网际 组管理协议
①尽量用硬件多播,效率高,没有参与多播的不会收到IGMP报文
②多播路由器在探询组成员关系时,对组发一个询问
③当有多个多播路由器时,它们能快速有效地选择其中一个来探询
④一台主机要发送多个多播报文时,随机数时间(时延),时延小的先发
⑤组内都要监听,但有一个组成员响应时,其他的就不用响应了
多播转发树
多播路由协议:
①洪泛和剪除
RPB反向路径广播:收到多播数据报时,检查是否是从源点经最短路径传来的,是就向发送方外的其他路由转发,不是则丢弃
如果多播树上的某个路由的下游树枝已经没有该多播组的成员,则把它和下游一起剪除
②隧道技术
如果两个网支持多播,但是他们之间的网不支持,则封装成单播发送
③基于核心的发现技术
一个多播组指定一个核心路由器
④其他协议
距离向量多播路由选择协议DVMRP、基于核心的转发树CBT、开放最短通路优先的多播扩展MOSPF、协议无关多播-稀疏 / 密集方式PIM-SM/PIM-DM
(5).分组转发算法
- 从数据报的首部提取ip地址D,得出目的网络地址为N
- 若N就是直接相连的某个主机,直接交付
- 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中的下一跳路由器
- 若路由器中有到达目的网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的下一跳路由器
- 使用ICMP差错报告报文报错
(6).路由选择协议
(7).RIP
基于距离向量的路由选择协议(分布式)Routing Information Protocol
要点:
① 距离不能超过16,等于16为不可达
② 仅和相邻路由交换信息
③ 路由器交换的是当前路由器所知的全部信息,即整个路由表
④ 按固定时间间隔交换信息
好消息传播快,坏消息传播慢
RIP基于Bellman-Ford算法
(8).OSPF
开放最短路径优先(Open Shortest Path First)(分布式的链路状态协议)
三个与RIP不一样的要点:
① 洪泛法,更新收敛快
② 发送的信息是与本路由器相邻的所有路由器的链路状态,但是是部分信息
③ 只有当链路状态变化时,才开始洪泛
其他特点:
OSPF对不同类型的业务可计算出不同路由
负载均衡
鉴别功能,保证信息只在可信赖的路由器之间交换链路信息
支持CIDR
带序号,32位,序号越大的报文越新
发送的分组类型:
①问候,发现和维持可达性
②数据库描述
③链路状态请求
④链路状态更新
⑤链路状态确认
(9).BGP
边界网关协议(Border Gateway Protocol)使用了路径向量选择协议:
选择BGP发言人来在AS间交换信息
是树形结构的自治系统连通图,不存在回路
报文种类:
OPEN(打开)
KEEPALIVE(保活)
UPDATE(更新)
NOTIFICATION(通知)检测差错用
(10).路由器
(11).IPv6
①零压缩:
FF05:.0:0:0:0:0:0:B3→FF05::B3
②过渡:
双协议栈
传输过程中,IPv6数据报遇到IPv4网络时,将首部转化为IPv4,但是会丢失流标号。
隧道技术
将IPv6封入IPv4数据部分
(12).VPN和NAT
VPN虚拟专用网(Virtual Private Network)
10.0.0.0——10.255.255.255
172.16.0.0——172.31.255.255
192.168.0.0——192.168.255.255
NAT
通过一个装有NAT的路由器,路由器至少有一个全球ip地址,内网在与外网连接时,路由器会将它的内网ip映射成一个全球ip。这样就可以使专用网内较多的主机轮流使用NAT路由器中有限的全球ip地址
(13).划分子网
比较简单,只提一下最长前缀匹配
使用CIDR后,路由表的地址查找要查找最长前缀匹配的,使用的是二叉线索树
(五)运输层
提供端到端的可靠通信,端点为进程
(1).协议端口号
(2).UDP
差错检测和IP协议的差不多,但是检测首部和数据部分,结果全1时无差错
(3).TCP
①TCP首部
序号 :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
确认号 :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。
数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。
确认 ACK :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。
终止 FIN :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。
窗口 :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。
② 可靠传输
停止等待协议(ARQ)(Automatic Repeat reQuest自动重传请求)
有进行编号,明确哪个分组收到确认
超时重传时间的选择
加权平均往返时间 RTTs ,计算如下
若α很接近于0,则表示新的RTTs值和旧的变化不大(RTT值更新较慢)
超时重传时间RTO应略大于RTTs
重传不计RTO的原因:
无法判断确认报文是对先发送的还是重传的
但是这样导致堵塞时无法更新RTO
所以采用重传直接X2的算法
③流量控制
滑动窗口协议
通过设置窗口rwnd的大小来控制流量
这种流量控制会有两个问题
第一是发送时机的问题,如果是交互式应用一次只发一个字节,会很浪费资源
使用捎带确认的方法,实际应用为Nagle算法,即把第一个字节先发送出去,并把后面的字节都缓存起来,当收到第一个字节的确认后,再把缓存中的所有数据组装成一个报文段发送,当要发送的数据已达到发送窗口大小的一半或报文段的最大长度时,立即发送。
二是糊涂窗口综合征
指接收方缓存满后,交互式应用进程正在使用,一次读取一个字节,然后发送确认,并将窗口设为一个字节,发送方一次发一个字节,接收方确认…
让接收方等待一段时间,直到接受缓存有一半的空间再发
④拥塞控制
防止过多数据注入到网络中,这样可以使网络中的路由器和链路不至于过载
流量控制是端到端的,而拥塞控制是全局的
⑤ 主动队列管理AQM
(4).TCP连接
① 三次握手
seq为序号,ack为确认号
为什么要有第三次握手
假设只有两次握手,C的请求在某结点滞留,C重发,S确认连接,释放连接后,C的第一次请求终于到了,S确认连接,并一直等待着C的数据,一直浪费资源
② 四次挥手
为什么要等待2MSL
1.保证C最后的ACK能到达,如果C发完后直接关闭,S没收到确认,要求重传,C可以重传确认,并重新计时
2.已失效请求重新出现时,新连接被旧请求关闭,等待2MSL让所有请求从网络中消失
保活计时器
两小时无数据,发探测报文,每隔75秒一次,10次后关闭连接
(六)应用层
应用层提供各种各样的应用层协议,这些协议嵌入在各种我们使用的应用程序中,为用户和网络之间提供一个打交道的接口
(1).DNS
DNS域名系统,简单描述其工作原理。
①当一个应用进程需要把某个域名解析为IP地址时,该应用进程就会调用解析程序,并成为一个DNS用户
②把待解析的域名放在DNS请求报文中,进行递归查询,以UDP数据报的形式发送给本地域名服务器,端口为53
③本地域名服务器查找缓存得到相应域名的IP地址后,就将该域名的IP地址信息放入应答报文中返回给客户进程
④如果本地域名服务器没有直接查找到对应的IP地址,则向根域名服务器发出迭代查询,再将查询到的IP地址信息回传给客户程序。
(2).FTP
基于TCP,修改文件需要拉取整个文件后重新上传,NFS不用这样,可以只上传修改部分
TFTP 简单文件传送协议
基于UDP,可以一对多,且代码内存占用小
端口:69
(3).SMTP
一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件协议。
邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。
(4).DHCP动态主机配置协议
DHCP (Dynamic Host Configuration Protocol) 提供了即插即用的连网方式,用户不再需要手动配置 IP 地址等信息。
DHCP 配置的内容不仅是 IP 地址,还包括子网掩码、网关 IP 地址。
DHCP 工作过程如下:
- 客户端发送 Discover 报文,该报文的目的地址为 255.255.255.255:67,源地址为 0.0.0.0:68,被放入 UDP 中,该报文被广播到同一个子网的所有主机上。如果客户端和 DHCP 服务器不在同一个子网,就需要使用中继代理。
- DHCP 服务器收到 Discover 报文之后,发送 Offer 报文给客户端,该报文包含了客户端所需要的信息。因为客户端可能收到多个 DHCP 服务器提供的信息,因此客户端需要进行选择。
- 如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器。
- DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。
(5).其他
TELNET
端口:23
WWW
HTTP
端口:80,HTTPS 443,无连接,无状态
HTTP/1.1,持续连接,有两种工作方式,一种是不停发请求保持连接的流水线模式,一种是收到响应才能再发请求的非流水线模式(主要)