计算机网络
因特网
TCP/IP协议栈
传输层:应用程序端点(进程)之间传送报文段
网络层:主机之间传送数据报
链路层:相邻的网络元素之间传送帧
物理层:节点之间传送比特
层次 |
信息分组 |
协议 |
端口 |
应用层 |
报文 |
HTTP、SMTP、FTP、DNS |
应用程序 |
传输层 |
报文段 |
TCP、UDP |
进程 |
网络层 |
数据报 |
IP、RIP、OSPF、BGP |
主机 |
数据链路层 |
帧 |
以太网、WiFi、PPP |
节点 |
物理层 |
比特 |
|
网络元素 |
协议
一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及在报文传输和接受或其他时间方面采取的动作
接入网
将端系统连接到其边缘路由器的物理链路
电路交换和分组交换
通过网络链路和交换机移动数据的两种基本方法
主要区别
- 电路交换为通信提供的资源在通信会话期间会被预留;分组交换中不会被预留
- 电路交换服务质量稳定:即使带宽不用(静默期)也不会被占用,但效率差
- 分组交换提供比电路交换更好的带宽共享
- 分组交换比电路交换更简单有效,实现成本低
电路交换
- 预留电路,若每条链路有n条电路,则每条电路在连接期间获得该链路带宽的1/n
- 多路复用:频分多路复用和时分多路复用
分组交换
- 存储转发传输:交换机能够开始想链路传输比特前,必须接收到整个分组
- 每段链路的存储转发时延:L(分组的比特)/R(每段链路的速率)
时延
总时延 = 节点处理实验+排队时延+传输时延(L/R)+传播时延(D/S)
流量强度(La/R)不能大于1
TraceRoute原理
- 客户端发送一个TTL为1的ICMP请求回显数据包,在第一跳的时候超时并返回一个ICMP超时数据包,得到第一跳的地址。
- 客户端发送一个TTL为2的ICMP请求回显数据包,得到第二跳的地址。
- 客户端发送一个TTL为3的ICMP请求回显数据包,到达目标主机,目标主机返回一个ICMP回显应答,traceroute结束。
应用层
应用层协议原理
应用层程序体系结构
客户机/服务器体系结构:Web、FTP、Telent、e-mail
P2P体系结构:电话、文件分发、PTV
发起通信的进程为客户机,会话开始时等待联系的进程为服务器
套接字
应用程序通过套接字收发报文,套接字是应用程序进程和传输层协议之间的接口
支持应用的传输层协议
应用 |
应用层协议 |
传输层协议 |
邮件 |
SMTP |
TCP |
远程终端访问 |
Telent |
TCP |
Web |
HTTP |
TCP |
文件传输 |
FTP |
TCP |
流媒体 |
HTTP、RTP |
TCP或UDP |
因特网电话 |
SIP、RTP |
UDP |
目录服务 |
DNS |
UDP |
进程寻址
识别接受进程需要的信息
- 主机的名称或地址:ip地址
- 用来指定目的主机上接受进程的标识:端口号
HTTP
超文本传输协议
HTTP是无状态协议:不保存关于用户机的任何信息
报文结构
请求报文

响应报文

HTTP状态码
|
类别 |
原因短语 |
1XX |
Informational(信息性状态码) |
接收的请求正在处理 |
2XX |
Success(成功状态码) |
请求正常处理完毕 |
3XX |
Redirection(重定向状态码) |
需要进行附加操作以完成请求 |
4XX |
Client Error(客户端错误状态码) |
服务器无法处理请求 |
5XX |
Server Error(服务器错误状态码) |
服务器处理请求出错 |
Cookie和Session的区别
Cookie和session都是用来跟踪浏览器用户身份的会话方式
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
Web缓存
Web缓存器也称代理服务器,有自己的磁盘存储空间,并在该存储空间中保存最近请求过的对象的拷贝
p70 2-11
优点
- 可以减少对客户机请求的相应时间
- 可以减少一个机构内部网与因特网接入链路上的通信量
条件GET方法
持久与非持久HTTP
- 持久HTTP:连接持续期间,C-S经由一个服务器套接字交换HTTP报文
- 非持久HTTP:对每一对请求/响应,都有一个新的TCP连接被创建,完成后即关闭
HTTP详见https://www.jianshu.com/p/a6d086a3997d
FTP
FTP使用两个并行的TCP连接来传输文件,一个是控制连接(21端口)一个是数据连接(20端口)
控制连接贯穿了整个用户会话期间,但是会话中的每一次文件传输都需要建立一个新的数据连接
FTP使用分离的控制连接,故FTP的控制信息是带外的
FTP命令与回答用ASCII格式在控制连接上传送
邮件传输协议
SMTP
p76 2-16
邮件服务器之间使用SMTP传送邮件
SMTP一般不用中间邮件服务器发送文件(两端直连)
邮件报文的主体部分职能用7位ASCII码表示,在传送邮件之前和之后需要编码和解码
与HTTP的区别
- 拉协议vs推协议
- SMTP要求7位ASCII码
- HTTP用带内控制,FTP用带外控制
DNS
DNS组成
- 分层的DNS服务器实现的分布式数据库
- 允许主机查询数据库的应用层协议
DNS服务器的层次结构
根DNS服务器->顶级域服务器(TLD)->权威DNS服务器->本地DNS服务器
p89 2-21
DNS缓存:当DNS服务器接收到一个DNS回答时会将其缓存
使用UDP协议的原因:
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包
资源记录
提供主机名到IP地址的映射
(Name,Value,Type,TTL)
TTL:记录的生存时间(资源应从缓存中删除的时间)
Type |
Value |
A |
IP地址 |
NS |
权威DNS服务器的主机名 |
CNAME |
别名为Name的主机对应的规范主机名 |
MX |
别名为Name的邮件服务器的规范主机名 |
DNS报文
p91 2-23
P2P应用
C-S体系结构的缺点:分发时间由NF/u决定,随着对等方的数量N线性地增加
socket编程
TCP的socket编程

传输层
多路复用和多路分解
定义
- 多路复用:从源主机不同套接字中收集数据块,并为每个数据块封装首部信息从而生成报文段,将报文段传递到网络层
- 多路分解:将传输层报文段中的数据交付到正确的套接字
- 指定要交付的套接字的字段:源端口号和目的端口号
Socket的共用
若两个UDP报文段有不同的源IP地址和源端口号,但有相同的IP地址和目的端口号,则通过相同的套接字定向到相同的目的进程;TCP中,两个有不同源IP地址或源端口号的TCP报文段会被定向到两个不同的套接字
TCP套接字由(源IP地址、源端口号、目的IP地址、目的端口号)来标识
UDP
无连接、不可靠
优点:
- 应用层能更好地控制要发送的数据和发送时间
- 无需建立连接
- 无连接状态
- 分组首部开销小
报文段结构
- 首部:源端口号、目的端口号、长度、检验和
- 应用数据
UDP检验和
发送方对报文段中所有16比特字的和进行反码运算,接收方一起相加,若无差错则和全为1
可靠传输
模型 p137 3-8
构造可靠数据传输协议
p137-144
- rdt1.0:完全可靠信道上的传输
- rdt2.0:加入差错检测、接收方反馈和重传 引入序号
- rdt3.0:有比特交替协议 倒计数定时器
流水线
p146 3-18
- 必须增加序号范围
- 协议的发送方和接收方必须缓存多个分组
解决流水线差错
回退N步(GBN,滑动窗口协议)p147
选择重传(SR)p150
选择重传中,每个分组必须拥有自己的逻辑定时器,接收方和发送方的窗口总是不一致
TCP
面向连接、可靠、全双工
首部长度字段指示32比特字为单位的TCP首部长度
报文段的序号是报文段首字节的字节流编号,故TCP传输的最大文件的大小:2^32
从开始建立连接到收到一次发送的数据的总时间:2RTT,三次握手+一次数据传输
三次握手

四次挥手

为什么TCP握手不是两次或四次
三次握手分别作用:
- 第一次握手后,S可以确认自己收报文与C发报文的功能都正常,而C呢,它什么都不能确认。
- 第二次握手后,C可以确认自己的收发报文与S的收发报文功能都正常,也就是认为连接已建立。
- 那么第三次呢,S也可以确认双方能够正常通信。
两次:防止失效的连接请求报文段被服务端接收,从而产生错误
如果不进行第三次握手,所以在S对C的请求进行回应(第二次握手)后,就会理所当然的认为连接已建立,而如果C并没有收到S的回应呢?此时,C仍认为连接未建立,S会对已建立的连接保存必要的资源,如果大量的这种情况,S会崩溃。
四次:冗余
Time-wait原因
- 为了保证客户端发送的最后1个连接释放确认报文能到达服务器,从而使得服务器能正常释放连接
- 防止上文提到的早已失效的连接请求报文出现在本连接中
客户端发送了最后1个连接释放请求确认报文后,再经过2MSL
时间,则可使本连接持续时间内所产生的所有报文段都从网络中消失,即在下1个新的连接中就不会出现早已失效的连接请求报文
流量控制和拥塞控制的目的
流量控制:消除发送方使接收方缓存溢出的可能性
拥塞控制:减少因为网络的拥塞而丢包的可能性
拥塞控制


- 慢启动:cwnd = 1,每一个传输的报文确认后,cwnd+=1(速率指数增长)
- 拥塞避免:加性增,每过一个RTT,cwnd+=1(速率线性增长)
- 快速恢复:ssthresh = cwnd/2,cwnd = sstresh
TCP快速重传为什么是三次冗余ACK:
两次duplicated ACK时很可能是乱序造成的,三次duplicated ACK时很可能是丢包造成的,四次duplicated ACK更更更可能是丢包造成的,但是这样的响应策略太慢。
网络层
网络层的主要功能
- 转发:将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地操作
- 选路:分组从源到目的地时,决定端到端路径的网络范围
分组交换机
- 交换机:基于链路层字段中的值作转发决定
- 路由器:基于网络层字段中的值作转发决定
网络层提供尽力而为服务
虚拟电路和数据报
主要区别
网络层提供连接服务的网络:虚电路网络
网络层提供无连接服务的网络:数据报网络
虚电路网络
虚电路的组成
源与目的主机之间的路径、VC号(沿着该路径每段链路一个号码)、沿着该路径每台路由器的转发表表项
该网络的路由器必须为进行中的连接维持连接状态信息,建立新连接时将新的连接项加入转发表中,释放时删除
虚电路的阶段
虚电路建立、数据传送、虚电路拆除
路由器之间传递的用于建立VC的报文称为信令报文,用来交换这些报文的协议成为信令协议
数据报网络
最长前缀匹配原则
转发表由选路算法修改,1-5min更新一次
路由器原理
交换结构
交换技术
经过总线比内存快:不需要经过路由处理器的干预
输出端口
交换结构->排队(缓存管理)->数据链路处理(协议、封装)->线路段接->
排队
输入输出端口若发生排队,必须有一个分组调度程序来选择下一个传送的分组:FCFS、加权公平排队(WFQ)…
缓存满时要弃尾或者删除一个已排队的分组
线路前部阻塞(HOL):若输入端口排队中,之前的的分组被阻塞,则之后的分组也必须等待,即使其输出端口无竞争
IP协议
数据报格式
IP数据报分片
原因
链路层的最大传输单元(MTU)比以太网帧最大可承受的数据小
IP片
- 标识:说明属于同一数据包
- 偏移:每个offset表示8字节数据
- 标志:flag==1说明后面还有,flag==0说明是最后一片
在目的地端系统,数据报在IP层完全重构为初始的IP数据报才会被交付给目的地传输层,数据报的重新组装工作在端系统中完成,而不是路由器
若不允许分片,则路由器收到过大的数据报会丢包
子网
分开主机和路由器的每个接口,产生的几个分离的网络岛,每个独立的网络都是一个子网
无类别域间选路CIDR
因特网的地址分配策略:无类别域间选路
将32位地址划分为a.b.c.d/x,x为子网长度,该地址的x最高比特构成IP地址的网络部分,称为该地址的前缀
分类编址
8 16 24比特子网地址的网络成为A B C类网络
- A 10.0.0.0 - 10.255.255.255
- B 172.16.0.0 - 172.31.255.255
- C 192.168.0.0 - 192.168.255.255
子网广播:子网.all 1
子网ID:子网.all 0
动态主机配置协议DHCP
为组织内的主机和路由器接口分配IP地址,还允许主机获取其他信息如其子网掩码、默认网关、DNS服务器地址
也称为即插即用协议
DHCP步骤
- DHCP服务器发现:主机广播(255.255.255.255)DHCP发现报文,源地址为0.0.0.0
- DHCP服务器提供:DHCP服务器用DHCP提供报文进行响应,用广播地址255.255.255.255
- DHCP请求:客户机选择DHCP服务器(可能有多个),发送DHCP请求报文,广播,目的为通知其他用户
- DHCPACK:服务器用DHCPACK对请求报文进行响应,广播,同理
不足
在子网间移动时不能维持与远程应用间的连接
网络地址转换NAT
原理
NAT路由器上维护NAT转换表,表项中包含了端口号和IP地址
e.g
WAN端 |
LAN端 |
138.76.29.7,5001 |
10.0.0.1,3345 |
… |
… |
问题
违反端到端原则,妨碍P2P应用程序:P2P要求任何参与对等发A应该能够向任何其他参与向任何对等参与方B发起一个TCP连接
NAT穿越
对等方A通过一个中间对等方C与对等方B联系,对等方A能够经由对等方C请求对等方B,发起直接返回对等方A的一个TCP连接
互联网控制报文协议ICMP
ICMP结构上位于IP之上,但通常被认为是IP的一部分
TraceRoute
向目的主机一次发送一系列IP数据报,均携带不可到达的UDP端口号的UDP报文,TTL依次增大。若不到达源主机,路由器丢弃该数据报,返回ICMP警告报文,包含路由器名字与IP地址,若到达,源主机从定时器得到往返时延和路由器名字与IP地址
如何知道何时停止:目的主机会向源主机发送一个端口不可到达的ICMP报文,收到时得知应停止
ICMP报文类型
p231 4-23
IPv6
数据报格式与IPv4的不同
- 去除检验和
- 支持选项但在下一个首部 字段中
- 地址扩容 32->128
- 舍弃许多IPv4的首部字段
- 流标签:用于标识一个数据报的流
取消了分片功能、首部检验和,加快IP转发速度
从IPv4向IPv6迁移
双栈 隧道 p235 p236
双栈:直接做转换,但是会丢失字段
隧道:将IPv4作为数据封装进IPv6
选路算法
源主机的默认路由器(第一跳路由器):源路由器
目的主机的默认路由器:目的路由器
选路算法的分类
- 按全局性/分布式分类
- 全局选路算法:链路状态算法(LS),必须知道每条链路的费用
- 分布式选路算法:距离向量算法(DV),每个节点得知与其直接相连链路的费用即可工作
- 按静态动态分类:静态选路算法中,路由变化缓慢,动态算法周期性随拓扑或费用的变化运行
- 按负载敏感/迟钝分类:负载敏感算法中,链路费用动态变化,反应底层链路的拥塞水平,RIP、OSPF、BGP都是负载迟钝的
链路状态选路算法
Dijkstra算法 p240
对于每个节点记录(距离,上一跳路由)
最坏情况:O(n2)
防止振荡:保证并非所有的路由器都同时运行LS算法,但会出现自同步,每台路由器随机发送链路通告的时间来避免自同步
距离向量选路算法
迭代、异步、分布式
dx(y) = min{c(x, v) + dv(y)}
每个节点维护下列选路数据
- 直连每个邻居的费用c(x,y)
- 节点的距离向量:节点到N中所有目的地费用的估计值
- 节点每个邻居的距离向量
每个节点不时向每个邻居发送它的距离向量,当节点收到来自邻居的距离向量时,保存并更新自己的距离向量
毒性逆转
DV可能导致选路环路,从而导致计数到无穷问题
解决:毒性逆转
若z通过y选路到达目的地x,则z通告y:z到x的距离为无穷大
但毒性逆转无法检测到3个或更多节点的环路
LS与DV的比较
- DV中,节点仅与它直接相连的邻居通信,告知对其他所有节点的链路费用;LS中,每个节点与其他所有节点通信,但仅告知直接相连的链路费用
- 报文复杂性:LS O(N*E),DV仅在新联路费用导致与相连的节点最低费用路径改变时才传播改变的链路费用
- 收敛速度:LS O(N2), DV收敛较慢
- 健壮性:LS中,每个节点仅计算自己的转发表,一定程度上是分离的;DV中一个不正确的节点计算值会扩散到整个网络
层次选路
自治系统内部选路协议(RIP、OSPF)intra
自治系统间选路协议(BGP) inter
- 从相邻AS获取可达性信息
- 向该AS中所有路由传播可达性信息
- 转发表项(x,I)x为子网,I为从该路由器到网关路由器的位于最低费用路径上的路由器接口
热土豆算法:选择具有最小的最低费用的网关
在转发表中增加AS外目的地的步骤
- 从AS间协议知道经多个网关可达子网x
- 使用来自AS内部协议的选路信息来决定每个网关的最低费用路径的费用
- 热土豆选路:选择具有最小的最低费用的网关
- 从转发表决定通向最低费用网关的接口I,将(x,I)项放入转发表中
因特网中的选路
选路信息协议RIP
一种距离向量协议,用跳数作为其费用测度
用RIP响应报文交换选路更新信息,又称RIP通告
每台路由器维护一张称为选路表的RIP表:
目的子网 |
下一台路由器 |
到目的地的跳数 |
w |
A |
2 |
设置最大跳数为15,防止环路
一旦超过180秒没有监听到其邻居,该邻居不再被认为是可达的,修改本地选路表,通告相邻邻居
RIP使用UDP来传递信息,可当做一个应用层进程
开放最短路径优先OSPF
一个使用洪泛链路状态信息的链路状态协议和一个Dijkstra最低费用路径算法
每当一条链路的状态发生变化,路由器广播链路状态信息
OSPF通告包含在OSPF报文中,OSPF报文直接承载在IP分组中
优点
- 安全
- 允许多条相同费用的路径
- 对单播和多播选路的综合支持
- 支持单个选路域内的层次结构
层次结构的OSPF
4种OSPF路由器
- 内部路由器:位于非主干区域且只执行AS内部选路
- 区域边界路由器:同时属于区域和主干两个区域
- 主干路由器:执行主干中的选路
- 边界路由器:与属于其他AS的路由器交换选路信息
边界网关协议BGP
BGP基础
位于连接端点的两台路由器称为BGP对等方,沿着该连接发送所有BGP报文的TCP连接称为BGP会话
跨越两个AS的BGP会话称为外部BGP会话(eBGP),AS内部的BGP会话称为内部BGP会话(iBGP会话)
BGP中,目的地不是主机而是CDIR化的前缀
路径属性和BGP路由
一个AS有全局唯一的自治系统号(ASN)
重要的BGP属性
- AS-PATH:包含了前缀的通告已经通过的AS,若路由器看到自己的AS包含在AS-PATH中,拒绝该通告,防止循环通告
- NEXT-HOP:一开始某AS-PATH的路由器接口
网关路由器收到一个路由器通告时,它使用输入策略来决定是否接受或过滤改路由,是否设置某种属性
BGP路由选择
按以下顺序消除直至留下一条路由:
- 选最高本地偏好值(设定或从另一路由学习到)
- 选最短AS-PATH的路由
- 选最靠近NEXT-HOP路由器的路由(热土豆选路)
- 用BGP标识符来选择路由
选路策略
任何穿越某ISP主干网的流量必须是源或目的地位于该ISP的某个客户网络,否则这些流量将会搭便车
广播和组播
洪泛
节点向其所有邻居发送该分组的拷贝
若无控制,会出现广播风暴
受控洪泛的方法
- 源节点将其地址和广播序号加入广播分组再发送,接受时检查该分组是否在列表中,在则丢弃;不在则向除来源外的邻居转发
- 反向路径转发(反向路径广播):当一台路由器接收到具有给定源地址的广播分组时,仅当该分组到的的链路正好是位于自己到其源的最短单播路径上,才向其他出链路转发分组
链路层
概述
链路层协议采取的动作包括差错检测、重传、流量控制和随机接入
链路层协议的任务:将网络层的数据报通过路径中的单端链路节点到节点地传送
数据报在不同的链路上可能由不同链路层协议所承载
链路层能提供的服务
- 成帧
- 链路接入
- 可靠交付通过确认和重传取得
- 流量控制
- 差错检测和纠正
- 半全工和双全工:可否同时传输和接收
链路层的主体部分在网络适配器中实现,也称为网络接口卡
差错检测和纠错
比特级差错检测和纠错
奇偶校验
奇检测
包含一个附加比特,使得d+1个比特中1的总数总为奇数;偶检测相反
只能检测奇数个比特差错
二维奇偶校验
可以纠错单个比特差错,可以检测(但不能纠正)一个分组中两个比特差错的任何组合
检验和方法
将k比特的整数加起来,并且用得到的和作为差错检测比特
循环冗余检测
- r+1比特模式,R有r个比特
- CRC采用模2算术操作,加法不进位减法不借位
接收方检验:用G去除d+r,余数为0则无差错
多路访问协议
信道划分协议
分类
- 时分多路复用(TDM):将时间划分为时间帧,并进一步划分为N个时隙
- 频分多路复用(FDM)
- 码分多址(CDMA):每个节点分配不同的编码
FDM、TDM的缺陷
- 节点被限制在R/N的平均速率,即使它为唯一有分组要发送的节点
- 节点必须总是等待它再传输序列中的轮次,即使它是唯一一个有帧要发送的节点
FDM、TDM优点
CMDA
CDMA对每个节点只分配一种不同的编码,不同的节点能同时传输,互不干扰
随机接入协议
一个节点总是以信道的全部速率进行发送,有碰撞时,涉及碰撞的节点反复重发它的帧,直至无碰撞为止。但不是立刻重发,而是等待一个随机时延
效率
当有大量活跃节点且每个节点总有大量的帧要发送时,长期运行中成功时隙的份额
时隙ALOHA
如果有碰撞,节点在时隙结束之前检测到这次碰撞,以概率p在后续每个时隙中重传它的帧,直到该帧被无碰撞地传输出去
优点:只有一个活跃节点时工作出色
当有N个节点时其效率为Np(1-p)^(N-1),最大效率约为1/2e(0.37)
ALOHA
若发生碰撞,下一时隙以p概率重传该帧,以(1-p)概率等待一帧;等待之后如前
最大效率为1/2e
载波侦听多路访问CSMA
- 载波侦听:发送前先侦听,若空闲则发送,否则等待
- 碰撞检测:若碰撞则停止传输
有碰撞检测的CSMA:CSMA/CD
由于存在信道传播时延,即使进行了载波侦听,仍可能出现碰撞。信道传输时延越大,载波侦听节点越可能不能侦听到网络中另一节点已开始传输
轮流协议
轮询协议
指定节点之一为主节点,主节点以循环的方式轮询每个节点
缺点:
- 若只有一个节点时活跃的,主节点也必须依次轮询
- 若主节点有故障,整个信道不可操作
令牌传递协议
没有主节点,有帧要发送的节点才持有令牌,否则将令牌转发,效率高
缺点:一个节点的故障会使整个信道崩溃
LANs
LAN:Local Area Network 局域网
MAC地址
LAN地址、物理地址、MAC地址
同个子网下,数据链路层在网络适配器间传输数据使用的地址标识
长度6个字节,每个字节为一对16进制数,具有扁平结构(所以具备可迁移性)
MAC广播地址:FF-FF-FF-FF-FF-FF
地址解析协议ARP
将网络层地址转换为链路层地址
每个节点(主机或路由器)的ARP模块都有一个ARP表
DNS和ARP的区别
DNS为因特网中任何地方的主机解析主机名,但ARP只为同一个子网下的节点解析IP地址
ARP表
IP地址 |
MAC地址 |
TTL |
222.222.222.221 |
88-B2-2F-54-1A-0F |
13:45:00 |
生存期(TTL):从表中删除每个映射的时间
ARP寻址的过程
- 发送节点构造并广播ARP查询分组,其中包括发送节点和接受节点的MAC地址和IP地址(接受节点的MAC地址为广播地址)
- 子网中的适配器接收后,向上传递给节点中的ARP模块,检查IP地址是否与ARP分组中的匹配
- 一个匹配的节点给查询节点发送回一个响应ARP分组
- 发送节点更新ARP表
发送数据报到子网以外的节点
源IP地址,源MAC地址:主机的IP地址和MAC地址
目的IP地址,目的MAC地址:目的主机IP地址,网关的MAC地址(路由器响应接口的MAC地址)
若直接使用目的主机的MAC地址,子网中的适配器都不会将其传递到网络层,因为该帧的目的地址都不与子网中适配器的MAC地址匹配
具体过程:
- 主机通过ARP获取通往目的子网的路由器与本地网相连端口的MAC地址,创建帧并将其放入子网中
- 路由器接收该帧,并将数据报交付给网络层,查询转发表,获取转发接口后,将数据转发到该接口
- 接口将数据报交付给其适配器,适配器将数据报封装到一个新的帧中,该帧的目的地址为最终目的地址的MAC地址(MAC地址通过ARP获得),同时源MAC地址为此时适配器的MAC地址
以太网
提供无连接、不可靠服务
以太网帧结构
- 数据字段 46-1500字节:以太网最大传输单元(MTU)为1500字节,数据段最小长度为46字节,如果不足需要填充
- 目的地址 6字节:目的适配器的MAC地址
- 源地址 6字节:传输该帧到LAN上的适配器的MAC地址
- 类型字段 2字节:允许以太网复用多种网络协议
- 循环冗余检测CRC 4字节:目的是使得接收适配器检测帧中是否进入了差错
- 前同步码 8字节:前七个字节为10101010,最后一个字节为10101011,用于唤醒接收适配器,同步其时钟与发送方时钟
CSMA/CD
以太网的多路访问协议
CSMA/CD机制:
- 适配器可以在任何时刻开始传输,没有时隙概念
- 载波侦听:当适配器侦听到有其他适配器正在传输,不传输帧
- 碰撞检测:当传输中的适配器检测到有其他适配器正在传输,终止传输
- 重传前适配器等待一个随机时间,通常比传输一帧的时间短
CSMA/CD工作方式:
- 适配器从网络层得到一个数据报,准备一个以太网帧并放到适配器缓存区中
- 若适配器侦听到信道空闲,开始传输
- 传输过程中监视来自其他适配器的信号能量
- 如果检测到来自其他适配器的信号能量,停止传输
- 中止后适配器进入指数后退阶段,在该帧经受了n次连续碰撞后,适配器随机从{0,1,2,…,2^m-1}为K选择一个值,m=min{n,10},适配器等待K*512比特时间,返回第二步(随机、指数增长的上界)
以太网效率
网线越长,效率越低
交换机
交换机是即插即用设备
交换机功能
交换机工作过程
假定有目的地址DD-DD-DD-DD-DD-DD的帧从交换机接口x到达
- 若表中没有DD-DD-DD-DD-DD-DD的表项,交换机广播该帧
- 若存在表项将DD-DD-DD-DD-DD-DD与接口x联系起来,交换机丢弃该帧(过滤功能)
- 若存在表项将DD-DD-DD-DD-DD-DD与接口y(!= x)联系起来,交换机将该帧转发到y接口,并将信息添加到表项中
自学习
- 交换机表初始为空
- 对于接口收到的每个帧,交换机在其表中记录
- 该帧源地址字段中的MAC地址
- 该帧到达的接口
- 当前的时间
- 接下来一段时间(老化期)中,交换机没有接收到以该址为源地址的帧,则删除该地址
交换机的性质
交换机和路由器的比较
- 由于交换机只需要查看二层数据帧 的头部即可决策转发地址,策略十分简单,可以直接通过硬件芯片实现相应功能,所以可以做到廉价高速,被大量应用在接入层。
- 而路由器由于需要处理跨网络的连接,必须在接收到完整的 IP数据包 后才能转发数据,路由协议又比较复杂,所以只能使用软件的方式实现相应的功能,要达到高性能只能付出更高的价格
- 交换机的优缺点
- 优点:即插即用;具有相对高的分组过滤和转发速率
- 缺点:对广播风暴不提供保护措施
- 路由器的优缺点
- 优点:即使网络存在冗余路径,分组也不会通过路由器循环;对第二层的广播风暴提供了防火墙保护
- 缺点:非即插即用;处理时间较长
PPP
高级数据链路控制协议(HDLC)
PPP数据成帧
- 标志 1字节
- 地址 1字节
- 控制 1字节
- 协议 1或2字节
- 信息 可变长度
- 检验和 2或4字节
- 标志 1字节
VLAN
局域网缺点
支持VLAN的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网
多协议标签交换MPLS
MPLS首部
标签、实验、S、TTL
Web请求
DHCP(UDP)、AQP、DNS(UDP)、HTTP、FTP
RIP/OSPF、BGP
详见PPT 或 课本p330
DHCP
- DHCP请求报文 生成UDP报文段 放入以太网帧 广播
- 被分解 CIDR分配地址 收到DHCPACK
ARP
- DNS查询报文
- ARP查询报文查询网关路由器MAC地址
- ARP回答,获取网关路由器的MAC地址
DNS
- 网关路由器接收转发 通过域内协议和域间协议BGP
- 找到DNS源记录 查询权威DNS 生成DNS回答报文 放入UDP IP数据报
TCP
- 生成TCP套接字
- 三次握手:TCPSYN报文段 TCPSYNACK报文段
HTTP
- HTTP请求 HTTP GET报文
- 服务器生成HTTP响应报文 放入请求内容 发送到TCP套接字
- 获取响应 渲染
无线网络
无线链路的特征(与有线区别)
- 递减的信号强度:电磁波在穿过物体时强度减弱
- 来自其他源的干扰:同一频段发送信号的电波源将相互干扰
- 多路径传播:走了不同长度的路径
信噪比
收到的信号和噪声强度的相对测量,较大的SNR使接收方更容易提取传输的信号
802.11MAC协议
无线LAN采用随机访问协议:带碰撞避免的CSMA(CSMA/CA)
802.11使用链路层确认/重传(ARQ)机制
802.11未实现碰撞检测
- 接收信号的强度通常远远小于发送信号的强度,构建具有检测碰撞能力的硬件代价较大
- 适配器会由于隐藏终端问题和衰减问题无法检测到所有的碰撞
802.11的CSMA/CA协议
- 若初始时某站点监听到信道空闲,在一个分布式帧间间隔(DIFS)的短时间段后发送该帧
- 否则,选取一个随机回退值并且在侦听信道空闲时递减该值,侦听到信道忙时,计数值保持不变
- 当计数值减为0时(只可能发生在信道被侦听为空闲时),站点发送整个数据帧并等待确认
- 若果收到确认,发送站知道它的帧已经被目的站接收了