CMPE 80N - Introduction to Networking Notes
这只是个Notes而已。
Lecture #2 (Network)
Week 1 Thursday 2019/1/10
计算机网络(Computer Network)的定义:允许终端节点(Nodes)共享资源的数字电信(digital telecommunications)网络
用于终端节点(End nodes),用于在多种回路(circuits)中传递电子信息的,由复杂系统(Complex System)和协议(Protocol)相互连接(interconnection)组成
协议(Protocol):协议是一系列规则(Rules),管理如何传输数字信息,包括
- 信息的格式和大小(Format and size of the message)
- 传递信息的时间(Timing of the messages)
- 是否要求回复以及超时(Required resonse and timeouts)
服务器和客户端(Servers and Clients)——主从式架构(C/S架构)
一台主机(Host)或设备(Device),可能扮演着客户端,服务器,或同时这两种角色。决定其身份的是软件(Software)。
服务器(Server)向客户端提供信息和服务。
不同的服务需要不同的服务器软件。(Each service requires separate server software)
客户端(Clients)向服务器索取信息。
P2P(Peer-to-Peer)
P2P是一种去中心化(decentralized)网络,基于所有参与者具有同等的权利(equal rights of all participants)。
所有设备同时扮演服务器和客户端两种角色。
网络的基础设施(Network Infrastructure)包括以下三类组成:
设备(Devices):包括终端设备(End devices)和中间设备(intermediary devices)
终端设备是一条信息的起点(source)或终点(destination)。产生用户信息(Generate user content)。
中间设备将终端设备连接到网络中,或与其他中间设备连接。举例:局域网设备(LAN Devices,如交换机,无线接入点,负责局域网内部的连接),网络互联设备(Internetworking Devices,如路由器,连接不同的网络)
媒介(Media):有线和无线,信息传输的媒介。包括金属线(Metallic wires,传递电脉冲Electrical Impulses),光纤(Fiber optics,传递脉冲或电磁波),无线(传递电磁波)
根据不同的需要选择不同的媒介,比如:传输信号的距离(Distance),传输的环境(电磁干扰,景观,是否有铺设权利等),所需要的带宽(Bandwidth)
服务(Services):应用(Applications)和互联网服务(Network Services)
带宽(Bandwidth)是一定时间内,能够传输的数据量。带宽不是速度。
数字设备中通常以 bits per second (b/s)为单位。模拟设备中有时以cycles per second,又称为赫兹(Hertz, Hz)作为单位。 常用的单位包括b/s;kb/s;Mb/s;Gb/s;Tb/s等。
拓扑图:包括物理拓扑图(Physical Topology Diagrams,描述中间设备的具体位置,配置的端口以及导线的安装等),和逻辑拓扑图(Logical Topology Diagrams,描述设备,端口,以及IP地址的分配)
LAN和WAN
局域网LAN(Local Area Network)具有三个特征:
- 分布在一个小的地理区域(Spans a small geographic area)
- 由单一组织或个人管理(administered by a single org or individual)
- 在网络中提供终端设备与中间设备的高速带宽(Provides high speed bandwidth to end and intermediary devices)
广域网WAN(Wide Area Network)是用户向电信运营商租用的连接(Leased connections through a telecommunications service provider network),特征包括:
- 连接LAN或提供范围大的地理区域之间的连接(如城市,省,乃至国家等)
- 一系列的WAN通常会由多个运营商负责管理。
- WAN通常带宽比LAN小。
互联网(The Internet)将全球的计算机网络通过TCP/IP协议族连接起来。
集合网络(Converged Networks)是相对于多网络(Multiple Networks)的一个概念。多网络时代,电话,以太网和有线电视有不同的端口,通过不同的网络连接。集合网络中,所有设备可以通过同一网络连接,接线端口也一致。
可信网络(Reliable Network)
网络必须支持多种设备和应用。在架设底层网络时,为了满足用户需求,应该处理以下四个基本特性:
- 容错(Fault Tolerance)
用户的期望自然是网络一直连接着。当一个设备出现故障时,我们能够自动切换到备用(Redundant/alternative)设备。网络服务和协议应能够自动适应这种情况。
- 延展性(Scalability)
当新的用户和应用加入网络时,不应影响到已存在的用户。
- 服务质量QoS(Quality of Service)
QoS是指在出现网络繁忙(congestion)时,将分配不同的优先级(Priority),保证数据流的性能达到一定水准。
- 安全性(Security)
安全性包括两个概念,一个是网络基础结构的安全,包括设备的安全以及防止未授权的连接;另一个是信息安全,保护传输在此网络中的信息和数据。
三个目标(CIA):机密性(Confidentiality,只有指定的收件人能够读取信息),完整性(Integrity,保证信息没有被篡改),可行性(Availability,保证授权用户的及时、可信的连接)
电路交换和封包交换
电路交换(Circuit Switching)是说,通信的双方先建立起一条通信通道,然后将一直占用这条通道直到结束。
封包交换(Packet Switching)是说,信息将会被分成多个小块传输到对应的服务器。每一条线路可以为多个小块服务。
Lecture #3 (Network Models and Protocols)
协议(Protocol):人与人之间的协议通常是指人类交流之间的规则(比如写信的格式等)。网络协议(Network Protocol)是指管理如何传输电子信息的规则(Rules)。通常包括:信息的格式和大小(Format and size of the message),发送信息的时间(Timing of the message),是否要求回复以及超时(Required Response and timeouts)等。
网络协议通常以协议族(suite of protocols)的形式出现。一次传输需要多个协议,每个协议有不同的用处。根据他们在OSI模型中的不同层,这一系列协议建立了所谓的协议栈(Protocol Stack)。
OSI模型(Open System Interconnection Reference Model)
OSI模型,中文翻译为开放式系统互联通信参考模型,是由国际标准化组织(ISO)在1984年提出的,为一系列网络协议搭建的分层框架(layered framework)。
通常分为以下7部分,从最上端开始分别是
7. 应用层(Application) |
6. 表达层(Presentation) |
5. 会话层(Session) |
4. 传输层(Transport) |
3. 网络层(Network) |
2. 数据链路层(Data Link) |
1. 物理层(Physical) |
然而在1980年代,由一系列学者提出的互联网协议套件(Internet Protocal Suite),又称为TCP/IP协议模型(TCP/IP Model),成为了实际上的标准。
应用层(Application):对应OSI 5/6/7 |
传输层(Transport):对应OSI 4 |
互联网层/网络层(Internet):对应OSI 3 |
网络连接层(Network Access):对应OSI 1/2 |
分层结构可以帮助我们理解每一个协议的作用,以及与其他协议的关系。它提供了一个描述协议功能的标准语言。
封装过程(Encapsulation)即是指我们的信息,在通过协议栈一层层向下的时候,对原本的数据添加控制信息(Control Message)的过程。这个过程和我们封装快递差不多。举例:当我们通过浏览器访问一个网站的时候,(为方便描述,采取TCP/IP协议模型)
网络应用的软件(Network Application Software)首先在我们的访问信息前加上HTTP协议的控制信息。此时的协议数据单元(Protocol Data Unit, PDU)仍然是数据(Data)。
之后,信息向下进入传输层。此时我们的Data连同HTTP Header一起,加上了TCP协议的控制信息,TCP Header。TCP协议主要用于检测可信度,流控制和错误控制。传输层的PDU是数据段(Segment)。
我们的Segment在从传输层出来以后进入网络层。我们的数据段被IP协议加上控制信息。这一层给数据段加上了原地址以及目标地址。网络层的PDU是数据包(Packet)。
最终,我们的数据包在网络连接层进行传输。封装过程在我们加上最后一部分,以太网的控制信息后结束。在数据连接层(OSI第2层)以太网(Ethernet)中传输时,PDU是数据帧(Frame);更具体的落实到物理层(OSI第1层)中传输时,PDU是比特(bits),一个个0和1。
在以太网中传输时,传送到其他设备后,该设备首先会解封(Decapsulation)以太网的控制信息。之后设备会将自己的IP地址与包上的目标IP地址进行比对。如果不匹配,说明这个包不是发给他的。这个包会被再次封装上新的以太网控制信息,传输到下一个设备。这就跟物流公司在不同仓库之间转运包裹一样。
如果某设备在解封以太网控制信息后发现,这个包裹就是给他的,那么他就会继续进行解封,IP信息,TCP信息,HTTP信息,直到最后他获得了里面我们传输的数据。
分段传输(Segmentation)
我们在传送信息时,如果我们把一整块信息一股脑直接发送过去,很容易受到干扰,并且也得长时间占用信道。为了解决这个问题,我们在发送时会将信息分割成若干个小段。同一条信道上可能会交错着不同的会话信息,这即是多路复用技术(Multiplexing)。
分段传输中,我们会对每一个包进行编号(Labeling)。在所有包传输到目标地址后,对方会对其进行重组(Re-assembly)。
建立标准的其他一些组织
互联网协会(ISOC, Internet Society):促进各标准和协议的开放发展,包括监督IAB(互联网结构委员会)
互联网结构委员会(IAB, Internet Architecture Board):负责管理和开发互联网标准,下属IETF和IRTF
互联网工程工作小组(IETF, Internet Engineering Task Force):开发,更新和维护互联网和TCP/IP技术;生产RFC文档(Request For Comments)。生产短期(short-time)的标准。
互联网研究工作小组(IRTF, Internet Research Task Force):专注于互联网和TCP/IP的长期发展。
电气电子工程师学会(IEEE,Institute of Electrical and Electronic Engineers):对网络影响较大的是IEEE 802.3和IEEE 802.11
互联网号码分配局(IANA, Internet Assigned Numbers Authority)以及互联网名称与数字地址分配机构(ICANN, Internet Corporation for Assigned Names and Numbers):负责维护与分配与域名(DNS)和IP地址的数据库。
两种不同的地址:第二层和第三层
OSI模型的第二层名为数据链路层。数据帧在同一网络(same network)中,以网卡对网卡(NIC-to-NIC,NIC for Network Interface Controller,专业表述为网络接口控制器)的方式传输。即,从导线的一段传输到另一端。这其中将用到比如以太网媒体访问控制地址(Ethernet MAC Address,MAC for Media Access Control)的数据链路层地址。该地址是永久不变的,所以又叫物理地址(Physical Address)。MAC地址仅和网卡相关,不随设备的移动而变化。
OSI模型的第三层名为网络层。该层中涉及到IP地址。第三层的地址仅描述了始发地址和目标地址,且该地址会随设备的移动进行变化。
在数据包从始发地址传输到目标地址中间,可能会经过若干个路由器。首先数据包在始发设备(source)封装下一个路由器的MAC地址。每一个路由器都会做以下的工作:
1、核对数据帧数据链路层的地址。如果MAC地址与本机一致,解封数据帧至数据包。
2、核对数据包的目标IP地址。如果IP地址与本机一致,则说明数据包已送达目标地址,进行进一步的解封工作。
3、如果IP地址与本机不一致,则会根据路由表,将数据包封装通向下一个路由器的MAC地址,并往下一个局域网设备传输。
因此,一个数据包在送往目标地址中间,会经过多次的封装和解封数据链路层的控制信息,而数据包里的内容将不会发生变化。
Lecture #4 (Network Access Layer)
网络接口适配器(NIC, Network Interface Cards):又称为网卡,作用是将一台设备连接到网络。
以太网网卡(Ethernet NIC):负责有线连接。
无线局域网网卡(WLAN NIC):负责无线连接。WLAN for Wireless Local Area Network
第一层的传输
OSI模型的第一层为物理层。是指通过传输介质,传输构成数据帧的比特。
比特(BIT, BInary digiT):是信息的基础单位,描述两个离散状态之一(即0和1)。是计算机中最短的信息单位。
衰减(Attenuation)
信息在介质中传输时,因为各种各样的原因导致的损失,会让信息的传输产生衰减。因此我们规定了0和1两种不同的状态,即使信息产生了衰减,在一定的差值内,我们也能认出原来的信息是0还是1。
线路码(Line Code)
为了便于数字信号传输,我们会将原始的数据码进行一定的修改,形成一些预定义的编码(predefined codes)。这样的一个操作叫做线路编码(Line Encoding)。编码的方式有NRZ,RZ,Biphase等。
调制(Signaling/Modulation)
物理层产生电子信号,光信号或无线电波的0和1的过程。
带宽(Bandwidth)与吞吐量(Throughput)
带宽是指介质传输数据的最大承载力。这是一个定值。
吞吐量是指在一定时间内,在介质中传输的实际数据量。吞吐量是变化的,会受延迟,协议,配置和其他因素影响。
因为种种原因,吞吐量往往达不到我们实际的带宽大小。
数据链接层(Data Link Layer/Layer 2)
数据链接层描述了同一网络内,网卡与网卡之间的通信(NIC to NIC communications on the same network)。
数据链接层包括两个子层(sublayer),分别是上层的逻辑链路控制层(LLC,Logical Link Control)和下层的介质访问控制层(MAC,Media Access Control)。
LLC:提供网络层协议(IPv4和IPv6)服务的软件进程(Software Process)。
MAC:由硬件进行的介质访问过程(Media Access Process)。
MAC:控制与传输介质的访问
MAC子层调节在传输介质上的数据帧。它使得不同设备或网络上的节点可以在多点的网络上通信。
两种不同的网络:点对点网络和多路访问网络
点对点网络(Point-to-Point network)只有两个端点。一台设备传输信息时,只会传输给另一台设备。
点对点网络将两点连接,因此他们的MAC协议非常简单。
多路访问网络(Multi Access network)会有若干台设备连接在同一个网络中,比如以太网或无线局域网。多路访问网络需要IEEE 802.3(以太网)或IEEE 802.11(无线局域网)的协议支持。
逻辑多路连接拓扑结构(Logical Multi-access Topology):允许多个节点通过同一传输介质(比如集线器Hub)或拓扑结构(比如交换机Switches)进行联系。
由交换机或集线器构建的以太网中,所有设备都有可能接收到在介质中传输的数据帧。
为了确定一个数据帧是给哪个设备的,就需要用到第二层的目标地址(MAC地址)来进行区分。
一个数据帧中,数据链接层的控制信息包括6 bytes的始发地址,6 bytes的目标地址。除此以外,还有优先级(Priority/QoS,描述一个数据帧是否紧急),类型(Type,描述LLC层的软件服务类型),逻辑连接控制域(Logical Connection Control Field,用于建立两端点之间的逻辑连接),阻塞控制(Congestion Control,描述目前网络是否拥挤)等。这些部分封装时,会加在数据包之前,因此又叫帧头(Ethernet Header)。
同时,数据链接层还会加一个帧尾(Ethernet Trailer)。包括冗余校验(FCS,Frame Check Sequence)和停止帧(Stop Frame)。因为传输时可能的干扰,有时会出现帧值发生改变。因此我们添加了帧尾用于检测帧的传输是否有异常(Error Detection),并且尽可能修复异常(Error Correction)。
查错过程(Error Detection)中,数据链接层常用的方法是循环冗余校验(CRC, Cyclic Redundancy Check);更上层时查验更常见的是校验和(Checksums)。
无线局域网的MAC采用了 IEEE 802.11标准,是802.3标准的一个延伸。
与其他802标准一样,使用长度为48bit(6bytes)的地址控制。
同时,它采用了带冲突避免的载波监听多路访问技术(载波侦听多路访问/冲突避免)(CSMA/CA)。
单工、半双工和全双工传输
这三个概念是指在两个设备之间通信中,根据数据流的方向区分的传输方式。
单工(Simplex Transmission):仅限单向通信。A能够传送给B,但B不能传送给A。就像以前的卫星电视一样。
半双工(Half-Duplex Transmission):允许双向通信,但是同一时间只能进行单向的传输。一方在发送,另一方就不能发送,只能接收。
全双工(Full-Duplex Transmission):允许双向通信,且允许同一台设备在发送信息的同时也能接收信息。
Lecture #5 (Binary and Hexadecimal)
略过。小学知识。
Lecture #6 (Data Link Layer: Ethernet)
以太网中的数据传输是一种尽力投递(Best-effort Delivery)。它的传输并无保证。同时,他就像一个邮局一样,将包裹A传送到包裹B。但这包裹里具体装了什么……嗯,邮局服务其实并不关心这一点。(虽然现实的快递需要拆包检验,以太网传输并不干这个步骤,他只管传输信息而已)
最初的以太网,使用的是总线拓扑(Bus Topology)的形式。总线拓扑使用一根总线(Backbone segment),将所有的设备串接起来。所有的设备都与总线直接连接。
总线拓扑中,集线器(Hub)的作用就类似现在的公交一样,将信息发送给总线上的每一个设备。
同时,总线拓扑使用的是半双工的传输方式。
当每一台设备接收到数据帧以后,所有设备将会检查目标MAC地址是否与本机一致。
冲突(Collision)
当两台设备同时在总线上传输的时候,因为半双工的问题,就会出现冲突。解决以太网冲突的方法称为CSMA/CD技术。
载波侦听多路访问/冲突检测(CSMA/CD, Carrier Sense Multiple Access with Collision Detection)
载波监听(Carrier Sense):设备首先将会检测总线上是否有信息正在传输。
多路访问(Multiple Access):当设备检测到总线上没有信息正在传输时,该设备就可以向总线传输信息。
当然了,如果两个设备同时检测,发现总线上没有信息,然后同时开始传输了,这时候还是会发生冲突(Data Collision)。此时设备会检测到冲突(Collision Detection)并停止传输。之后,会由一个算法来决定谁先发送信息。
CSMA/CD技术与WLAN的CSMA/CA技术类似。
以太网数据帧的大小
以太II和IEEE 802.3标准规定:
最低帧大小为64字节(冲突检测和传输距离相关)
最高帧大小为1518字节(如果携带802.1Q的tag,大小扩充至1522字节)
冲突片段(Collision Fragment),或称为矮帧(Runt Frame)是指,帧大小小于64字节的数据帧。(通常他们携带的数据有效载荷"Payload",小于42字节)。
巨大帧(Jumbo Frame)是指帧大小大于1500个PAYLOAD的帧。
如果传输的帧大小超出了限制(无论是上界或是下界),接收设备通常会丢掉该帧(Drop this frame)。
帧类型(Ethertype)
一个2字节的部分,描述我们所发送的具体是什么类型的内容。比如0x0800描述我们发送了一个IPv4的地址,0x0806描述是一个地址解析协议(ARP),0x86DD描述是一个IPv6等等……
冲突域(Collision Domain)
同一个网络上两个设备同时进行传输则会产生冲突;在网路内部数据分组所产生与发生冲突的这样一个区域称为冲突域。究其原因,是因为网卡与集线器之间的传输是半双工的。这种网络大概会损失50%的带宽流量。
我们可以通过交换机(Switches)和路由器(Routers)分割冲突域。
当然了这些都是以前的历史了。如今的以太网网络使用的是全双工的网卡与交换机。它可以同时进行双向的传输。
自动协商(Auto-Negotiation)
自动协商机制是一个兼容机制。在设备接入交换机等设备后,交换机会与设备进行自动协商,确定传递方式是半双工还是全双工,以及传输的带宽是10M/s,100M/s等。
直通线和交叉线
连接设备之间的导线通常分为两种。
第一种称为直通线(Straight-through Cable),它用于连接不同类型的设备(比如PC和路由器,交换机和路由器等)。导线的两段端口使用同一种标准(T-568A或T-568B)。
第二种称为交叉线(Cross-over Cable),它用于连接相同类型的设备(路由器与路由器,交换机与交换机)。导线的两端通常使用不同的标准(一端T-568A,另一端T-568B)。
有一些设备具有自动媒体相关接口交叉(Auto MDIX,Automatic Medium-Dependent Interface Crossover)技术。它能够自动识别插入的导线类型是直通线或是交叉线,同时还可以协商传输方式(默认全双工),以及最大传输带宽等。
双工不匹配(Duplex Mismatch)
当两个设备连接,一个设备是全双工的,一个设备是半双工的时候,就会出现双工不匹配的问题。在两个设备之间进行传输时,由于全双工的设备可以任意的传输或接受信息,而半双工的设备只能选择其一,大部分的情况是全双工的设备会占用两个设备之间的通道,而半双工的设备只能接收。
MAC地址
MAC地址是局域网内的“身份证”。位于OSI模型的第二层,MAC地址是一个48位二进制数,通常以12个十六进制数字来表示。
IEEE对所有的网卡销售商作出了一些规定:网卡MAC地址的前24个二进制数(6个十六进制位),必需是IEEE发给的组织唯一标识符(OUI,Organizationally Unique Identifier),表明该网卡是由谁销售/加工的。而后24位二进制数,必须是唯一的,不能重复,它用于区分不同的显卡。
在Windows中可以通过cmd的ipconfig /all来查看,MAC/Linux用ifconfig -a查看。
单播、多播、广播及其对应MAC地址
单播、多播和广播这三个概念是根据“目标”,也就是接收信息设备的数量区分的。
单播(Unicast)是指一个数据帧只发往唯一的一个目标地址。单播地址(Unicast Address)是一个只代表单一设备的MAC地址。所有的“发送地址”(Source Address)都是单播地址。
多播(Multicast)将会发给多个目标地址,提供给一组设备。多播地址(Multicast Address)在IPv4里多播里,目标MAC地址规定以01:00:5E作为前缀;在IPv6的多播里,以33:33作为前缀。
广播(Broadcast)则会发送给该网络内所有的设备。广播地址(Broadcast Address)的目标MAC为FF:FF:FF:FF:FF:FF。
广播的范围仅限该网络内,由路由器(router)分隔。这个网络又叫做广播域(Broadcast Domain)。
不同设备的转发方式
信息从发送设备开始传输到目标设备,都会通过一系列的中间设备,比如集线器,交换机,路由器。他们之间有一些不同。
设备名称 | 作用 | 基于哪一层进行转发 | 特性 |
路由器(Router) | 连接不同的子网 | 基于目标IP地址(第三层地址)进行转发 | 维护路由表(Routing Table) |
交换机(Switch) | 连接在同一数据链上的设备 | 基于目标MAC地址(第二层地址)进行转发 | 维护MAC地址表 |
集线器(Hub) | 将一个端口得到的信息转发到其他端口 | 基于物理层转发01值 | / |
Lecture #7 (MAC Address Table and Spanning Tree Protocol)
交换机的地址表(MAC Address Table)
交换机是位于第二层的设备,用于连接同一数据链上(同一网络内)的设备。作用是转发传输到交换机上的数据帧。交换机维护一个叫做MAC地址表的表格,用于记录“MAC地址-端口”的对应关系。
交换机具有两个主要功能,一个是“学习”(Learn),另一个是转发(Forward)。
学习过程
每当交换机接收到一个新的数据帧的时候,它首先会查看该数据帧的发送地址,以及端口号。
如果该发送地址不在地址表当中,交换机会将该发送地址及对应的端口号加入地址表中,并设定5分钟的活跃时间。
若在活跃时间内,该交换机没有再收到来自这个发送地址的数据帧,这条地址-端口号的记录将会过期。它将不再存在地址表当中。下一次收到信息的时候,会重新写一次记录。具体的活跃时间也跟设备相关。
如果该发送地址已经存在地址表当中(并且处于活跃状态),将会重新刷新这5分钟的活跃时间(Reset the timer)。
在学习过程后,数据帧的发送地址将会登记在地址表当中。
转发过程
在学习过程后,交换机会对这个数据帧进行转发。转发会查看该数据帧的目标地址。
如果该目标地址是一个单播地址:
交换机会查看目标地址是否在地址表当中。如果在,将会根据对应的端口进行转发(只转发至该端口)。
如果不在地址表当中,交换机会向除了发送端口以外的其他端口进行转发。
如果该目标地址是一个多播或广播地址,除非使用了IGMP(网络群组管理协议),交换机都会向除了发送端口以外的其他端口进行转发。
生成树协议(Spanning Tree Protocol)
一般的数据链路中,我们不应架设出环形的链路(从一个交换机的A端口出来,能绕一圈回到这个交换机的B端口)。如果出现环形的链路,可能会产生广播风暴(Broadcast Radiation),数据包在交换机之间无休止的转发。
为了解决这一难题产生了生成树协议。生成树协议套用了算法设计当中的生成树的想法,将可能会出现环的那些边的端口禁用掉,避免出现冗余线路。同时,如果已经搭好的生成树上某一个地方出现了故障,生成树协议能够根据冗余的线路来重新生成一条无环通路。
Lecture #8 (Address Resolution Protocol)
准备知识:一台机子上涉及到的多种“IP地址”(IPv4)
IP地址(IP Address):是分配给该设备的,在该网络中的一个IP协议用地址。
子网掩码(Subnet Mask):一个32位数值,通过IP地址与子网掩码做位与运算(Bitwise AND),可以得到“该网络的IP”。如果两台设备的网络IP一致,我们就认为这两个机器在同一个网络上。
默认网关(Default Gateway):当本机要给一个不在本网络上的IP地址发送数据包的时候,本机将会先把数据包发给自己的默认网关,通常是一个路由器设备。之后,再由路由器转发到因特网中。
DNS服务器(Domain Name System Server):因为我们现在都不会去记某个网站的IP地址,而是向地址栏访问一个域名(比如jcarlson.is-programmer.com),所以我们的设备在访问该网站之前,先会向DNS服务器去询问该域名所对应的IP地址,然后才能发送数据包。因此DNS服务器起到一个“解析域名”的作用。
地址解析协议(ARP,Address Resolution Protocol)
我们知道了目标机器的IP地址,但是我们不知道对方的MAC地址。这时候我们需要用到地址解析协议,向网络内的所有设备进行广播,询问对应的MAC地址。这样的一个请求叫做ARP请求(ARP Request),得到的回复叫做ARP回复(ARP Reply)。
ARP请求
当我们的机器要访问某个目标IP时,我们的机器首先会在自己的电脑上的ARP缓存(ARP Cache)上查找。
ARP缓存和地址表的样子差不多,它存储着“IP地址-MAC地址”的对应关系。它的活跃时间跟设备设定相关。
如果找到了对应的MAC地址,我们就可以直接发送我们的数据帧。如果没有对应的地址,我们当前要发送的那个数据帧就要搁置(Hold),并重新准备一个新的ARP请求数据帧。它包括:
第二层【目标MAC:FFFFFF(广播);发送MAC地址:本机MAC地址】第三层【目标IPv4地址、本机IP地址、本机MAC地址等】
收到消息的每一台设备将会解封第二层信息,并查看第三层信息的目标IP地址是否与该设备IP一致。
一致的那台设备,首先会将第三层的本机IP地址-MAC地址的关系,添加到该设备的ARP缓存里,然后将会发送ARP回复。
*尽管网络上的其他设备都能接收到ARP请求,并且都有权限解封这个数据帧,但是如果目标IP地址与他们的IP不符合,他们不会将本机的IP地址和MAC地址加入ARP缓存里。
ARP回复
我们的目标设备在接收到ARP请求后,将会发送一个数据帧回到发送设备。这个流程叫做ARP回复。
ARP回复数据帧包括:
第二层【目标MAC:我们本机的MAC;发送MAC:目标机器的MAC】第三层【目标机器的IPv4;目标机器的MAC地址】
收到该数据帧的我们本机设备在解封第二层信息后,查看第三层信息,得到了我们需要的MAC地址。
首先我们会将这个IP地址-MAC地址的对应关系添加到ARP缓存当中,以备下一次的发送。
之后,我们将原来挂起的那个真正想要发送的数据帧拿回来,添加我们刚刚得到的目标MAC地址,这个数据帧就可以发送了。
如果我们访问的是网络内的IP,我们真正想要发送的那个数据帧的目标MAC地址,就是该IP地址对应的MAC地址。
如果我们访问的是网络外的IP,我们的那个目标MAC地址,是该网络的默认网关的MAC地址。
备注:一般交换机没有IP地址和MAC地址。但是如果你正好搞到了一些高级的交换机,它可能会具有网卡,又一个对应的MAC地址,因此在一个网络中也具有了IP地址。
Lecture 9 (Review Session)
N/A
Midterm
101/100
Lecture 10 (IPv4 and ICMPv4)
OSI模型中的第三层是网络层(Network Layer)。网络层的传递协议(Delivery Protocol)包括IPv4(Internet Protocol version 4,第四代互联网协议)和IPv6。
互联网协议的特征
无连接(Connectionless):在发送数据包之前,不建立两点之间的连接。
尽力投递(Best-Effort Delivery):不保证将数据送达目标地址。
独立于载体(Media Independent):独立于将数据传输向目标的载体介质(比如是光纤还是导线,IP不关心这个)
IPv4(Internet Protocol version 4)
第四代互联网协议最早于1980年代发展起来,于1980年1月提出(RFC 760,后来被1981年9月的RFC 791取代)。
它使用32位地址,点分十进制表示法(Dotted Decimal Notation)。每八位一分隔,格式为XXX.XXX.XXX.XXX。
转换的方法,例:
理论上,IPv4协议总共能够提供约42亿个IP地址。(不搞更多的理由是因为当年还没有想到网络会这么发达,发展到现在IPv4根本不够用的情况)理论值从0.0.0.0开始,一直到255.255.255.255。
每一台主机上都会有不少个IP地址,其中一个是本机的IP地址(IP address),另一个比较重要的是子网掩码(Subnet Mask)。
将IP地址和子网掩码做位与运算(Bitwise AND),就得到了这台主机所在的网络的地址。
与运算(AND)接收两个1位二进制A和B。(A AND B)当且仅当A和B同为真(1)的时候,结果为真(1)。其他情况都为假(0)。
位与运算可以接收两个二进制数A和B,对于每一个对应位,他都会进行一次与运算的计算。某一个数过小导致位数不够可以加前导零。举例:
一个IPv4地址是一个“分层”(Hierarchical)的地址,由两部分组成,分别是网络部分(Network Portion)和主机部分(Host Portion)。这两个部分的区分由子网掩码决定。
子网掩码(Subnet Mask)又称为前缀长度(Prefix Length),用于分割IP地址的网络部分和主机部分。它由32个二进制位组成,格式是一串连续的1跟着一串连续的0。1所对应的位置就是网络部分,0所对应的部分是主机部分。举例:
<---------网络部分--------->|<-主机部分->
子网掩码因为必需是一串1跟着一串0,不允许出现混杂,所以在使用点分十进制表示法的时候,理论上只能出现128,192,224,240,248,252,254,255这8个值。
子网掩码也可以用斜杠表示法。举例 11111111 11111111 00000000 00000000可以表示为/16(有16个1)。
上一个例子也可以表示为192.168.7.100/22。
一个网络的网络地址是IP地址和子网掩码做位与运算后的结果。
比如说,172.16.4.10/16就表示这个网络的网络地址是172.16.0.0。
人工计算的方法的话,可以将网络部分的二进制值完整照抄下来,然后后面主机部分全补0即可。
一个网络内的设备上限是由主机部分的位数所决定的。如果主机部分只有1位的话,他最多只有2个主机地址。如果有8位的话,就有2^8=256个主机地址。
主机部分的位数可以为0。尽管它看上去毫无实用价值,但理论上可以这么设置。
但是对于每一个网络,我们需要预留出两个地址:主机部分全0,为网络地址(Network Address)。主机部分全1,为广播地址(Broadcast Address)。剩下的地址全都可以分配给设备使用。
举例:对于一台设备的IP地址172.16.4.10/16,我们可以知道:
这台设备所在的网络的地址是172.16.0.0/16。
这台设备所在的网络所能分配的第一个地址是172.16.0.1/16。
这台设备所在的网络能所分配的最后一个地址是172.16.255.254/16。
这台设备所在的网络的广播地址是172.16.255.255/16。
默认网关(Default Gateway)
假设我们现在要发送一个数据包。如果它跟我们在同一个网络内,那我们就在网络内传输就好。但比如我们想要访问一个在本地网络外的IP,比如某度,我们的数据包将会先发送给默认网关(通常是一个路由器设备),由网关再发送给目标地址。
为此,我们需要知道这个网关的IP。在配置计算机的时候我们也需要填写默认网关IP。
子网划分
比如说我开了一家公司,在我们公司内网使用网络172.16.0.0/16进行管理。
但是,我又不想让所有的设备都直接连接在我的网络上。这时候我们可以对网络进行一些子网(subnet)的划分。比如我让销售部使用172.16.1.0/24的IP段,他们有254个设备可以连接到这个子网上。我让人事部使用172.16.4.0/24的IP段,他们也有254个设备可以连到这个子网上。
这样,虽然我们都在这个巨大的网络172.16.0.0/16里头,我把整个公司的所有设备分成了若干个子网。这样更方便进行管理。
互联网控制消息协议(ICMP,Internet Control Message Protocol)
众所周知IP协议是一个第三层的协议,它是尽力投递的,我们无法确保我们的数据包到达对方服务器。
那么,我们是否有什么办法去判断问题大概出在哪里了呢?ICMP协议可以通过发送控制消息,提供可能发生在通信环境中的各种问题反馈。
ICMP根据v4和v6分为两个不同的版本。v6在所有v4功能的基础上,有一些新特性。
ICMP一般用于提供“信息性消息”(Informational Messages,比如ping和traceroute),报错(Error Messages,比如无法到达对方服务器)。ICMP协议的标头被封装在IP的标头(Header)内部。对ICMP信息的处理是解决网络问题的重要部分。
ICMP的标头最主要由Type和Code两部分,由RFC 792等文件规定了一系列的意义。
Lecture 11 (IPv4 Configuration, IPv6)
IPv4配置
为了与在同一网络上的设备进行连接,需要合理配置:IP地址和子网掩码。
为了与你的网络外的设备进行连接,需要合理配置:默认网关IP地址。
为了访问时,使用域名(比如www.sina.com.cn)而不是IP地址(比如104.193.88.77),需要合理配置:DNS服务器IP地址。
可以参考Lecture 8的前部分内容。
一台设备(比如你的电脑)的IPv4地址可以静态配置(Static Configuration),亦或是动态配置(Dynamic Configuration)。
静态配置通常适用于打印机、服务器、各种中间设备等不常移动的设备。用户需要通过一个固定的IP地址去访问这些设备。但是静态IP地址配置比较容易出错,且比较费时。
动态配置由动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)完成。DHCP服务器掌管着一系列的IP地址(称为地址池,Address Pool),当用户向DHCP服务器申请地址时,DHCP服务器从地址池中选取出一个向用户设备发送,设备经过配置后即可接入该网络。动态配置适用于移动较为频繁的设备,比如个人电脑。
IP地址的分配
IP地址由IANA负责管理。全世界的IP地址被划分到五个区域互联网注册机构(RIR, Regional Internet Registry)。
互联网服务供应商(ISP, Internet Service Provider)从注册机构获得一批IP以后分配给他们的用户使用。ISP一般分为三个等级(Tier)。其中Tier 1最大,是互联网通信的主心骨。
IPv4时代的后期
自90年代万维网引入,家家户户可以连接入互联网时,IETF很快意识到当初设定的IP地址数量不太够了。
短期内IETF提供了网络地址转换(NAT, Network Address Translation),内网IP以及无类别域间路由(CIDR)等方法。长期上发展IPv6技术。
NAT和内网IPv4(Private IPv4 Address)
在RFC 1918中规定了三种“内网IP”:10.0.0.0/8;172.16.0.0/12;192.168.0.0/16。这些分段的IP被认为是内网。在单独网络的内部,都使用内网IP表示。RFC 6598中将100.64.0.0/10也列入了保留部分,但仅提供给ISP网络使用。
内网IP(Private IP)无法通过互联网直接连接,必须要通过路由器的NAT操作转换成公网IP(Public IP)才能在互联网中通信。内网中的设备发送消息时经过路由器,IP地址被重写。从互联网中传送到路由器上的设备也会被改写IP使得该数据包可以在内网中传送。NAT也允许一个网络内的多台设备同时共享一个IP地址——通过端口转换(PAT),若干台设备将会由不同的IP端口表示,比如219.152.168.222:9200;219.152.168.222:9201。
NAT以前是用于“隐藏”用户的IP地址的,因为它们不希望自己的IP地址直接由接受者所收到。但是NAT损害了端到端原则(End-to-end Principle),也并不安全。
一类特殊的NAT,运营商级NAT(CGN,Carrier Grade NAT,又被称为大规模NAT),在电信运营商与互联网连接时所使用。CGN可用于缓解公共IPv4紧张的问题。
IPv6……不对,先聊聊IPv5
IPv5其实是存在的。只不过我们不叫它IPv5,而称为“因特网流协议”(ST,Internet Stream Protocol,后来进化到ST2)。ST的发展目的是提供服务质量(QoS),支持多媒体在因特网上实时传输。后来ST被嵌入了IPv6。
IPv6于1995年首先提出,后来由98年的RFC 2460具体化。虽然IPv6解决了IPv4地址不足的问题,但同时也有很多新特性,例如无状态自动配置(Stateless Autoconfiguration)。
IPv6由128-bit组成,通常通过32个十六进制字符表示,每四个分为一组,每组之间用冒号分割。IPv6的总量可以达到约3.4×1038个。
举例:2001 : 0db8 : aaaa: 1111 : 0000 : 0000 : 0000 : 0100 。
当然了,这样写32个字符可能还是比较长,因此规定了两种缩写的规则。
规则1:每四个一组的前导0都可以被省略,注意只能是前导0。如果四个都是零,可以缩写成一个0。
2001:db8:aaaa:1111:0:0:0:100
规则2:如果有连续的两个以上的组都是全0,可以将这些零全部用双冒号代替。如果有两个部分都有两组以上的全0,只能缩写一组,剩下一组按规则1缩写。通常我们会缩写长度较多的一组;如果两组长度一致,则会缩写靠前的一组。(RFC 5952)
2001:db8:aaaa:1111::100
IPv6地址的类型
IPv6的地址分为全球单播地址(Global Unicast Address),唯一本地地址(Unique Local Address),和链路本地地址(Link Local Address)。
全球单播地址的范围为2000::/3。它全球唯一,可以被路由,与IPv4的公网IP概念类似。
它包括48位的全球路由前缀(Global Routing Prefix),16位的子网ID(Subnet ID),以及64位的接口(Interface ID,类似IPv4 Host Portion)。
唯一本地地址范围为FD00::/7,用作IPv6专用网络,可以用于子网之间的通信。
链路本地地址为FE80::/64,用于在同一链路上的设备通信,但是它不能越过路由器。
PA和PI地址空间
另外两个概念是“运营商无关地址空间”(PI Address Space)和“运营商聚合地址空间”(PA Address Space)。PI地址空间由RIR直接分配,如果更换ISP不影响该地址。PA地址空间由运营商负责分配,在更换运营商的时候,前一个地址便会失效。
IPv4和IPv6地址的动态分配
最后再聊聊动态分配(Dynamic Allocation)的事情。IPv4时代,我们想要获得IP地址,需要通过DHCP协议向DHCP服务器获取。
IPv6中,可以通过ICMPv6协议来获得地址,DHCP服务器有可能都不会介入,这就是无状态地址自动配置(SLAAC)。设备向路由器发送路由器请求(Router Solicitation),之后路由器将会广播(路由器宣告,Router Advertisement)包括网络前缀,默认网关,DNS服务器在内的所有你需要上网的信息。
Lecture 12 (Routing Protocols)
“路由协议(英语:Routing protocol)是一种指定数据包转送方式的网络协议。Internet网络的主要节点设备是路由器,路由器通过路由表来转发接收到的数据。转发策略可以是人工指定的(通过静态路由、策略路由等方法)。在具有较小规模的网络中,人工指定转发策略没有任何问题。但是在具有较大规模的网络中(如跨国企业网络、ISP网络),如果通过人工指定转发策略,将会给网络管理员带来巨大的工作量,并且在管理、维护路由表上也变得十分困难。为了解决这个问题,动态路由协议应运而生。动态路由协议可以让路由器自动学习到其他路由器的网络,并且网络拓扑发生改变后自动更新路由表。网络管理员只需要配置动态路由协议即可,相比人工指定转发策略,工作量大大减少。”——Wikipedia
路由器是如何转发我们的数据包的?
首先在路由器收到数据包后,进行第二层解封,检查第三层的IP目标地址。
之后,将会在自己的路由表(Routing Table)中搜索所能最长匹配到的网络前缀。
路由表中每一条记录都会有一个网络前缀和前缀长度。路由器将会匹配网络前缀一致且前缀长度最大的一个。如果没有匹配的话(也就是/0),会走一个默认路径,这被认为是最下策(Last Resort)。
第三步,路由器根据路由表中的记录决定它应该发往哪个下一站。
最后,路由器将数据包进行封装,发往下一个路由器或设备。
Alex Zinin的路由表三大原则
IP路由表的扩充(学习过程)
包括直连网络(Directly Connected Networks)和远程网络(Remote Networks)。
直连网络是该路由器直接连接的网络。路由器应该至少连接一个网络。
远程网络可以通过用户静态配置或通过动态路由协议扩充。
最佳路径(Best Path)
在转发数据包时,路由器通常会决定通向某个网络的最佳路径。这是根据路由协议确定的。
在路由协议中有一些特殊的规则和“权值”(Metric),又称为路由度量。该权值用于量化表示通向某个网络的路径,可能包括许多资讯,例如带宽、延迟、经过节点数、路径成本、负载、最大传输单元(MTU)、可靠性及传输成本等。如果某条线路的权值较低,我们说这条线路较好。最佳路径即是指权值最小的路径。
当通往某条网络的两条路径权值相同时,路由器将会采用“等价负载平衡”(Equal Cost Load Balancing),将接踵而至的数据包平均的分布发送到两条路径上。
动态路由协议
动态路由协议是指路由器自动地(动态的)更新扩大它的路由表所需要的协议。主要分类包括内部网关协议(IGP,Interior Gateway Protocol)和外部网关协议(EGP,Exterior Gateway Protocol )。
内部网关协议IGP是指在一个自治系统(AS,Autonomous System,又称为路由域 Routing Domain)内部所使用的协议。自治系统即是指“一个有权自主地决定在本系统中应采用何种路由协议的小型单位”,比如一个家,一个公司,一所学校等,是单独的管理单元。
IGP常用的协议包括EIGRP,OSPF,IS-IS,以及现在已经淘汰的RIP。
外部网关协议EGP是指自治系统之间的动态路由协议。目前常用的有BGP。
动态路由协议的目的
主要目的自然是发现远程网络。同时还包括维护实时路由信息,选择通向目标地址的最佳路径,杜绝转发时产生环,当原路径不再可用时寻找新的最佳路径。
动态路由协议的操作
通常的操作包括收发其接口上的路由信息,与使用相同协议的其他路由器共享、交换路由信息,当一个路由器检测到拓扑结构变化时告知其他路由器。
收敛(Convergence)
收敛是一种状态,是指一系列路由器通过动态路由协议交换信息,最终都已经了解了完整的、一致的他们所在网络的拓扑结构。收敛时间(Convergence Time)是指路由器完成交换信息、计算最佳路径、更新路由表等一系列操作所需要的时间。
如果路由器的信息不准确,可能会导致发送路径成环等故障。因此一个未收敛的网络是不可完全操作的(Not completely operable)。
IGP-距离矢量路由(Distance Vector Routing)
IGP的其中一种类型的路由方式叫做距离矢量路由。
距离矢量路由中,所有的路径被定义为一个包含两个参数【距离】+【方向】的矢量。距离是以权值Metric作为单位,方向是指下一个应发往的路由器。一般用Bellman-Ford(单源最短路径算法)来决定最佳路径。
在距离矢量路由协议中,该协议不要求路由器知道他所在网络的拓扑图。路由器只能通过他所连接的其他路由器获取路由信息。
从冷启动(Cold Start)开始到收敛的过程……
当一台路由器启动的时候,它对它所在的网络一无所知。一开始,他会首先发现与其直接连接(Directly Attached Networks)的网络,路由表上会更新这些网络以及它们的端口。
之后,我们的路由器会向直接连接的那些路由器发送他们当前的路由表用于他们的更新,同时也会接受来自邻居路由器的他们的路由表,用来更新自己的路由表。这些更新的数据会被加上一个指定的cost(可以是Hop,可以是Metric等)。之后,网络中的所有路由器都会继续执行以上的操作,直到所有路由器都不再更新,此时该网络达到收敛状态。
IGP-链路状态路由(Link State Routing)
链路状态路由协议需要构建整个网络的“完整拓扑结构”。链路状态路由与最短路径优先息息相关,通常使用Dijkstra来构建最短路径优先树(Shortest Path First Tree,SPF Tree)。通过链路状态,路由器构建拓扑图,确定从路由器到每一个节点的最短路径。
链路状态是指一条与路由器连接的链路的状态。它包括:网络的前缀和前缀长度,网络的类型,链路的成本,以及该链路所连接的所有相邻网络。
Lecture 13 (BGP)
边界网关协议(Border Gateway Protocol)是一种外部网关协议(EGP)。
当一个AS是单宿主(Single-Homed)的时候,也就是说该网络只有一条链路连接互联网或另一个AS时,不使用BGP。
当AS是多宿主(Multi-Homed)的时候,会使用BGP。但因为BGP是基于信任的,当BGP的配置出现问题,有可能会产生大范围的负面影响(比如2008年P国造成全世界很多地区上不了油管的事件)。
Lecture 14 (TCP and UDP)
Lecture 15 (Application Layer)
2022年8月22日 04:02
This year's GSEB Class Xllth Exams were administered by the Gujarat Secondary and Higher Secondary Education Board. upon the satisfactory completion of the exam. The GSEB Class 11th Examination Question Paper 2023 will be released by the Gujarat Board in the month of May. The Gujarat Board offers students a better education. Gujarat +1 Question Paper 2023 those those who are taking the Gujarat Board Plus-1 Exams. They are all impatiently awaiting the release of the 2023 Gujarat Board +1 Question Paper online. The Gujarat Board 11th Important Question Paper 2023 may be downloaded from the official website, and we also give a direct link so you can quickly check your Gujarat 11th Important Question Paper 2023. Listed below are some helpful instructions for students; all you have to do is adhere to them.