目录
网络地址转换NAT (Network Address Translation)
概述
网络的网络
ISP:互联网服务提供商,
- 个人或机构向 ISP 缴纳一定的费用就可以接入互联网。
- 目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。
主机之间的通信方式
客户/服务器(C/S):客户是服务的请求方,服务器是服务的提供方
对等(P2P):不区分客户和服务器。
电路交换与分组交换
1.电路交换
电路交换用于电话通信系统,两个用户要通信之前需要建立一条专用的物理链路,并且在整个通信过程中始终占用该链路。由于通信的过程中不可能一直在使用传输线路,因此电路交换对线路的利用率很低,往往不到 10%。
2.分组交换
每个分组都有首部和尾部,包含了源地址和目的地址等控制信息,在同一个传输线路上同时传输多个分组互相不会影响,因此在同一条传输线路上允许同时传输多个分组,也就是说分组交换不需要占用传输线路。
在一个邮局通信系统中,邮局收到一份邮件之后,先存储下来,然后把相同目的地的邮件一起转发到下一个目的地,这个过程就是存储转发过程,分组交换也使用了存储转发过程。
时延
总时延=排队时延+处理时延+传输时延+传播时延
1.排队时延
分组在路由器的输入和输出队列中的等待时间,取决于当前网络的通信量。
2.处理时延
主机或路由器收到分组时的进行处理所需要的时间,如分析首部、从分组中提取数据、进行差错检验、寻找适当的路由等
3.传输时延
主机或路由器传输数据帧所需要的时间
其中 l 表示数据帧的长度,v 表示传输速率。
4.传播时延
电磁波在信道中传播所需要的时间,电磁波的传播速度接近光速
其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。
计算机网络体系结构
1.五层协议
1.应用层
为特定应用程序提供数据传输服务,如HTTP、DNS服务,数据单位为报文。
2.运输层
为进程提供数据传输服务。由于应用层协议很多,定义通用的传输层协议可以支持不断增多的应用层协议。传输控制协议TCP:提供面向连接、可靠的传输服务,数据单位为报文段。用户数据报协议UDP:提供无连接、尽最大努力的传输服务,数据单位为用户数据报。TCP主要提供完整性服务,UDP主要提供及时性服务。
3.网络层
为主机提供数据传输服务。而数据传输协议是为主机中的进程提供数据传输服务。网络层把传输层传递下来的报文段会用户数据报封装成组。
4.数据链路层
网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
5.物理层
考虑的是怎样在传输媒体上传输数据比特流,而不是只具体的传输媒体。物理层的作用是尽可能
屏蔽传输媒体和通信手段的差异,使数据链路层感受不到这些差异。
2.OSI
表示层:数据压缩、加密以及数据描述,这时的应用程序在各台主机中数据内部格式不同的问题。
会话层:建立及管理会话。
五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。
3.TCP/IP
它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。
TCP/IP体系结构不严格遵循OSI分层概念,应用层可能会直接使用IP层或者网络接口层。
4.数据在各层之间的传递过程
在向下的过程中,需要添加下层协议所需要的首部和尾部,而在向上的过程不断拆开首部和尾部。
路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要传输层和应用层。
一、物理层
通信方式
根据信息在传输线上的传送方向,分为以下三种通信方式:
- 单工通信:单向传输
- 半双工通信:双向交替传输
- 全双工通信:双向同时传输
带通调制
模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转成模拟信号。
二、链路层
基本问题
1.封装成帧
将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
首部-- IP数据报--尾部
2.透明传输
这里的透明指看不见
帧使用首部和尾部进行定界,如果帧的数据部分含有首部和尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面加入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
3.差错检测
目前数据链路层广泛使用了循环冗余校验(CRC)来检测比特差错。
信道分类
1.广播信道
一对多通信,一个结点发送的数据能够被广播信道上所有节点接收到。所有节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(碰撞)。
2.点对点信道
一对一通信。
因为不会发生碰撞,因此也比较简单,使用PPP协议进行控制。
信道复用技术
1.频分复用
所有的主机在相同的时间占用不同的频率带宽资源。
2.时分复用
所有主机在不同时间占用相同的频率带宽资源。
3.统计时分复用
是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。
4.波分复用
光的频分复用。由于光的频率很高,因此习惯上用波长而不是频率来表示所使用的光载波。
5.码分复用
为每个用户分配m bit的码片,并且所有码片蒸饺,对于任意两个码片S和T有1/mS*T=0
CSMA/CD协议
CSMA/CD表示载波监听多点接入/碰撞检测。
- 多点接入:说明这是总线型的网络,许多主机以多点的方式连接到总线上。
- 载波监听:每个主机都必须不停的监听信道。在发送前,如果监听到信道正在使用,就必须等待。
- 碰撞检测:在发送中,如果监听到信道已有其他主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延存在,还是有可能发生碰撞。
记者端到端的传播时延为 τ,最先发送的站点最多经过2 τ就可以知道是否发生了碰撞,成2 τ为争用期。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
当发生碰撞时,站点要停止发送,等待一段时间在发送,这个时间采用截断二进制指数退避算法来确定。从离散的整数集合{0,1,...1(2^k-1)中随机取一个数,记作r,然后取r倍的争用期作为重传等待时间
。
PPP协议
互联网通常需要连接到某个ISP之后才能接入到互联网(nternet Service Provider,简称ISP)互联网服务提供商,PPP协议是用户计算机和ISP进行通信时所使用的数据链路层协议。
ppp的帧格式:
- F字段为帧的定界符
- A和C字段暂时没有意义
- FCS是使用CRC的检验序列
- 信息部分的长度不超过1500
MAC地址
MAC地址是链路层地址,长度为6字节(48位),用于唯一标识网络适配器(网卡)。
一台主机拥有多少个网络适配器就有多少个MAC地址。例如笔记本电脑存在无限网络适配器和有线网络适配器,因此就有两个MAC地址。
局域网
局域网是一种典型的广播信道,主要特点是网络位一个单位所拥有,且地理范围和站点数目均有限。
主要有以太网、令牌环网、FDDI和ATM等局域网技术,目前以太网占领着有线局域网市场。
可以按照网络拓扑结构对局域网进行分类:
以太网
以太网是一种星型拓扑结构局域网。
早期使用集线器进行连接,集线器是一种物理设备,作用于比特而不是帧,当一个比特到达接口时,集线器重新生产这个比特,并将其能量强度放大,从而扩大网络的传输距离,之后再将这个比特发送到其他所有接口。如果集线器同时收到两个不同接口的帧,那么就发生了碰撞。
目前以太网使用交换机替代了集线器,交换机是一种链路层物理设备,它不会发生碰撞,能根据MAC地址进行存储转发。
以太网帧格式:
类型:标记上层使用的协议;
数据:长度在46-1500之间,如果太小则需要填充
FCS:帧检验序列,使用的是CRC检验方法
交换机
交换机具有自学能力,学习的是交换表的内容,交换表中存储着MAC地址到借口的映射。
交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。
虚拟局域网
网络层
概述
网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据连接服务。
使用ip协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。
与ip协议配套 使用的还有三个协议:
地址解析协议ARP(address resolution protocol)
网际控制报文协议ICMP(internet control message protocol)
网际组管理协议IGMP(internet grop management protocol)
IP数据报格式
版本:有4(IPV4)和6(IPNV6)两个值;
首部长度:占4位,因此最大值为15。值为1表示的是1个32位字的长度,也就是4字节。因为固定部分长度为20字节,因此该值最小为5 。如果可选字段的长度不是4字节的整数倍,就用尾部的填充部分来填充。
区分服务:用来获得更好的服务,一般情况下不使用。
总长度:包括首部长度和数据部分长度。
生存时间:T TL,它的存在是为了防止无法交付的数据报在互联网不断兜圈子。以路由器跳数为单位,当TTL为0时就丢弃数据报。
协议:指出携带的数据应该上交给那个协议进行处理,例如ICMP、TCP、UDP等。
首部检验和:因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。
标识:在数据报长度过长而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
片偏移:和标识符一起,用于发生分片的情况。片偏移的单位为8字节。
IP地址编制方式
IP地址的编址方式经历了三个历史阶段:
分类
子网划分
无分类
1.分类
由两部分组成,网络号和主机号,其中部同分类具有不同的网络号长度,并且是固定的。IP地址::={< 网络号 >, < 主机号 >}
2.子网划分
通过在主机号字段中拿一部分作为子网号,把两级IP地址划分为三级IP地址。
IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >}
要使用子网,必须配置子网掩码。一个B类地址的默认子网掩码为255.255.0.0,如果B类地址的子网占两个比特,那么子网掩码为11111111 11111111 11000000 00000000,也就是 255.255.192.0。
注意,外部网络看不到子网的存在。
3.无分类
无分类编址CIDR消除了传统A类、B类和C类地址以及划分子网的概念,使用网络前缀和主机号来对IP地址进行编码,网络前缀的长度可以根据需要变化。
IP 地址 ::= {< 网络前缀号 >, < 主机号 >}
CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀
CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为网络前缀的长度。
一个CID人地址块中有很多地址,一个CIDR表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路由就可以代替原来的多个路由,减少了路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为构成超网。
在路由表中的项目由网络前缀和下一跳地址组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定应该匹配哪一个。
地址解析协议ARP
网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP数据报的原地址和目的地址始终不变,而 MAC地址随着链路的改变而改变。
ARP实现由IP地址得到MAC地址。
每个主机都有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到MAC地址的映射表。
网际控制报文协议ICMP
ICMP是为了更有效的转发IP数据报和提高交付成功的机会。它封装在IP数据报中,但是不属于高层协议。
ICMP报文分为差错报告报文和询问报文。
1.ping
ping是ICMP的一个重要应用,主要用来测试两台主机之间的连通性。
ping的原理是通过向目的主机发送ICMP Ehco请求报文 ,目的主机收到之后会发送Echo回答报文。ping会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。
2.Traceroute
Traceroute是ICMP的另一个应用,用来跟踪一个分组从源点到终点的路径。
Traceroute发送的IP数据报封装的是无法交付的UDP用户数据报,并由目的主机发送重点不可大差错报告报文。
虚拟专用VPN
由于IP地址的紧缺,一个机构能申请到的IP地址数往往小于本机构所拥有的主机数。并且一个机构不需要把所有的主机介入到互联网中,机构内的计算机可以使用尽在本机构有效的IP地址(专用地址)。
有三个专用地址快:
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.244
192.168.0.0~192.168.255.255
VPN使用公用的互联网作为本机构个专用王之间的通信载体。专用指机构内的主机只与本机构内的其他主机通信。
场所A和B的通信经过互联网,如果场所A的主机X要与场所B的主机Y进行通信,IP数据报的源地址是10.1.0.1,目的地址是10.2.0.3。数据报先发送到与互联网相连的路由器R1,R1对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器R1 的全球地址125.1.2.3,目的地址是路由器R2的全球地址194.4.5.6。路由器R2收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为10.2.0.3,就交付给 Y。
网络地址转换NAT (Network Address Translation)
专用地址网络的主机使用本地IP又想与互联网上的主机通信时,可以使用NAT将本地IP转成全球IP
在以前,NAT将本地IP与全球IP一一对应,拥有N个全球IP地址的专用网络最多可以拥有n台主机介入互联网。为了更有效的利用全球IP地址,现在NAT转换表把传输层的端口也用上了,使得多个专用网内部的主机能够共用一个全球IP地址。使用端口号的NAT也叫网络地址与端口转换NAPT。
路由器的结构
路由器从功能上可以划分为:路由选择和分组转发
分组转发结构有三部分组成:交换结构、一组输入端口和一组输出端口
路由器的分组转发流程
- 从数据报的首部提取目的主机的IP地址D,得到目的网络地址N。
- 若N就是与路由器直接相连的某个网络地址,则直接进行交付。
- 若路由表中有目的地址为D的塔顶主机路由,则把数据报传送给表中指明的下一条路由器;
- 若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的吓一跳路由器。
- 若路由表中又一个默认路由,则把数据报传送给路由表中所指明的默认路由器。
- 报告转发分组出错。
路由选择协议
路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应的进行调整。
互联网可以划分为许多较小的自适应系统AS,一个AS可以使用一种和别的AS不同的路由选择协议。
可以把路由选择协议分为两大类:
- 自治系统内部的路由选择:路由信息协议RIP(Rooting Information Protocol)和开放的最短路径优先协议OSPF(Open shortest Path First)
- 自治系统间的路由选择:BGP(边界网关协议:Border Gateway Protocol)
1.内部网关协议RIP
RIP是一种基于路由向量的路由选择协议。距离是指跳数,直接相连的路由器跳数位1,跳数最多为15
主要适用于规模较小的网络(当跳数为16时表示目的网络不可达)、可靠性要求较低的网络,可以通过不断的交换信息让路由器动态的适应网络连接的变化,这些信息包括可以到达那些恶网络。这些网络有多远等。
RIP按固定的时间价格仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和吓一跳路由器地址。
距离向量算法:
- 对地址为X的相邻路由器发来的RI P报文,先修改报文中的所有项目,把吓一跳字段中的地址改为X,并把所有的距离字段加1;
- 对修改后的RIP报文中的每一个项目进行以下步骤:
- 若原来的路由表中没有目的网络N,则把该项目添加到路由表中;
- 否则:若吓一跳路由器地址是X,则把收到的项目替换原来路由表中的项目;否则:若收到的项目中的距离d小于路由表中的距离,则进行更新(例如原始路由表项为 Net2, 5, P,新表项为 Net2, 4, X,则更新);否则什么也不做。
- 若3分钟还没有收到相邻路由器的更新路由表,则把该路由器标为不可达,即把距离置为16。
RIP路由器实现简单,开销小。但是RIP能使用的最大距离为15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有的路由器。
一、自治系统
- 自治系统(Autonomous system)通俗的讲就是我们把全球互联网分成若干个区域,每个区域由一定数量的路由器组成且每个区内部使用相同的内部网管协议协议(RIP或OSPF)去通信,而在区域之间进行通信会使用外部外部网关协议(BGP)去通信。
- 为什么要分自治域呢?不分可以吗?答案是不行的。分自治域主要有两个原因:
因特网非常庞大,而我们的路由器的路由表存储的信息将十分庞大,而且在路由器之间交换的信息也将十分庞大,会占据大量的带宽。
许多单位不想让别人了解本公司自治域内的网络的使用的具体协议细节,但是又希望连接到因特网中。
————————————————
2.内部网关协议OSPF(开放的最短路径优先协议)
开放的最短路径优先协议OSPF,是为了克服RIP的缺点而开发出;来的。
开放表示OSPF不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了Dijkstra提出的最短路算法SPF。
OSPF具有以下特点:
- 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。
- 发送的信息是与相邻路由器的链路状态,链路状态包括与那些路由器相连以及链路的度量,度量用费用、距离、时延、带宽来表示。
- 只有当链路状态发生变化时,路由器才会发送信息。
所有路由器都具有全网的拓扑结构图,并且是一致的。相比于RIP,OSPF的更新过程收敛很快。
3.外部网关协议BGP
BGP(Border Gateway Protocol,边界网关协议)
A S = Autonomous System,自治系统
自治系统AS之间的路由选择很困难,主要是由于:
- 互联网规模很大;
- 各个AS内部使用不用的路由选择协议,无法准确定义路径的度量;
- AS之间的路径选择必须靠路有关的策略,比如有些AS不愿意让其他AS经过。
BGP只能寻找一条比较好的路由,而不是最佳路由。
每个自治系统AS必须配置BGP发言人,通过两个响铃BG片发言人之间建立TCP连接来交换路由信息。
(TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议)
四、传输层
UDP和TCP的特点
用户数据报协议UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加UDP首部),支持一对一、一对多、多对一和多对多的交互通信。
UDP首部格式
首部字段只有8字节,包括源端口、目的端口、长度、检验和。12字节的伪首部是为了计算检验和临时添加的。
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时,表示此报文的发送方的数据已发送完毕,并要求释放连接。
窗口:窗口值作为接受方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。
TCP的三次握手
假设A为客户端,B为服务端。
- 首先B处于listen(监听)状态,等待客户的连接请求。
- A向B发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号x。
- B收到连接请求报文,如果同意连接,则向A发送连接确认报文,SYN=1,ACK=1,确认号为x+1,同时也选择一个初始的序号y。
- A收到B的连接确认报文后,还要向B发出确认,确认号为y+1,序号为x+1.
- B收到A的确认后,连接建立。
三次握手的原因
第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两次连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。
TCP的四次握手
- SYN(synchronous建立联机)
- ACK(acknowledgement 确认)
- PSH(push传送)
- FIN(finish结束)
- RST(reset重置)
- URG(urgent紧急)
- Sequence number(顺序号码)
- Acknowledge number(确认号码)