NAT(Network Address Translation)网络地址转换
允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。NAT 可以让那些使用私有地址的内部网络连接到Internet或其它IP网络上。NAT路由器在将内部网络的数据包发送到公用网络时,在IP包的报头把私有地址转换成合法的IP地址。
RFC1918规定了三块专有的地址,作为私有的内部组网使用:
A类:10.0.0.0—10.255.255.255 10.0.0.0/8
B类:172.16.0.0—172.31.255.255 172.16.0.0/12
C类:192.168.0.0—192.168.255.255 192.168.0.0/16
这三块私有地址本身是可路由的,只是公网上的路由器不会转发这三块私有地址的流量;当一个公司内部配置了这些私有地址后,内部的计算机在和外网通信时,公司的边界路由会通过NAT或者PAT技术,将内部的私有地址转换成外网IP,外部看到的源地址是公司边界路由转换过的公网IP地址,这在某种意义上也增加了内部网络的安全性。
原理
NAT的基本工作原理是,当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。
如下图所示,NAT网关有2个网络端口,其中公共网络端口的IP地址是统一分配的公共 IP,为202.20.65.5;私有网络端口的IP地址是保留地址,为192.168.1.1。私有网中的主机192.168.1.2向公共网中的主机202.20.65.4发送了1个IP包(Dst=202.20.65.4,Src=192.168.1.2)。
当IP包经过NAT网关时,NAT Gateway会将IP包的源IP转换为NAT Gateway的公共IP并转发到公共网,此时IP包(Dst=202.20.65.4,Src=202.20.65.5)中已经不含任何私有网IP的信息。由于IP包的源IP已经被转换成NAT Gateway的公共IP,Web Server发出的响应IP包(Dst= 202.20.65.5,Src=202.20.65.4)将被发送到NAT Gateway。
这时,NAT Gateway会将IP包的目的IP转换成私有网中主机的IP,然后将IP包(Des=192.168.1.2,Src=202.20.65.4)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。转换示意图如下。
分片(fragmentation)
Maximum Transmission Unit
数据链路层对数据帧的长度都有一个限制,也就是链路层所能承受的最大数据长度,这个值
称为最大传输单元,即MTU。以以太网为例,这个值通常是1500字节。
为啥要分片?分片重要吗?
数据包穿过一个大的网络,它其间会穿过多个网络,每个网络的MTU值是不同的。我们可以设想,如果
接受/发送端都是以太网,它们的MTU都是1500,我们假设发送的时候,数据包会以1500来封装,然而,
不幸的是,传输中有一段X.25网,它的MTU是576,这会发生什么呢?我想,这个才是我们所关心的。
当然,结论是显而易见的,这个数据包会被再次分片,咱开始用火车拉,到了半路,不通火车,只通汽车,
那一车货会被分为很多车……仅此而已
当一个IP数据报从某个接口送出时,如果它的大小超过相应链路的MTU,IPv4和IPv6都将执行分片。这些片段在到达终点之前通常不会被重组(reassembling)。IPv4主机对其产生的数据报执行分片,IPv4路由器则对其转发的数据报进行分片。然后IPv6只有主机对其产生的数据报执行分片,IPv6路由器不对其转发的数据报执行分片。
IPv4首部的“不分片”(do not fragment)位(即DF位)若被设置,那么不管是发送这些数据报的主机还是转发他们的路由器,都不允许对它们分片。当路由器接收到一个超过其外出链路MTU大小且设置了DF位的IPv4数据报时,它将产生一个ICMPv4“destination unreachable,fragmentation needed but DF bit set”(目的不可到达,需分片但DF位已设置)的出错消息。
既然IPv6路由器不执行分片,每个IPv6数据报于是隐含一个DF位。当IPv6路由器接收到一个超过其外出链路MTU大小的IPv6数据报时,它将产生一个ICMPv6 “packet too big”的出错消息。IPv4的DF位和隐含DF位可用于路径MTU发现。
把数据包分块很简单,但是把他们拼起来可就难多了
两种方法
• Transparent Fragmentation
– reassembly is performed at next router; subsequent routers are unaware fragmentation has taken place
• Nontransparent Fragmentation
– reassembly is performed at the destination host
标识符(16位)
Identification:发送端发送的IP数据包标识字段都是一个唯一值,该值在分片时被复制到每个片中。
标志(3位)
(1)R:保留未用。
(2)DF:Don't Fragment,“不分片”位, DF设置为0,表示可以分片,如果置1 ,IP层将不对数据报分片。
(3)MF:More Fragment,“更多的片”, 除了最后一片置0外,其他每个组成数据报的片都要置1。
偏移量(13位)
Fragment Offset:该片偏移原始数据包开始处的位置。偏移的字节数是该值乘以8。
两个Flags和Fragment Offset结合使用
如果MF为1而 Fragment Offset = 0,表示该IP报文为第一个分片,而且后续有分片;
如果MF为1而Fragment Offset不是0,表示该IP报文为中间的一个分片;
如果MF为0而Fragment Offset不是0,表示该报文是最后一个分片。
另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。
ip分片的缺陷:
每个header更长(占用更多资源)导致路由器的负担加重,一个分片丢了整个packet就没了
路径MTU - Path MTU Discovery
路径MTU发现是用来确定到达目的地的路径中最大传输单元(MTU)的大小。通过在IP报头中设置不分片DF(Don't Fragment)标志来探测路径中的MTU值, 如果路径中设备的MTU值小于此报文长度,并且发现DF标志,就会发回一个Internet控制消息协议(ICMP)(类型3、代码4需要分片的消息ICMP_FRAG_NEEDED),消息中包含它可接受的MTU值。
subnet 子网
子网掩码 (subnet mask) 又叫网络掩码、地址掩码、子网络遮罩,是一个应用于 TCP/IP 网络的 32 位二进制值。它可以屏蔽掉 IP 地址中的一部分,从而分离出 IP 地址中的网络部分与主机部分,基于子网掩码,管理员可以将网络进一步划分为若干子网。它必须结合 IP 地址一起使用。
虽然我们说子网掩码可以分离出 IP 地址中的网络部分与主机部分,可大家还是会有疑问,比如为什么要区分网络地址与主机地址?区分以后又怎样呢?那么好,让我们再详细的讲一下吧!
在使用 TCP/IP 协议的两台计算机之间进行通信时,我们通过将本机的子网掩码与接受方主机的 IP 地址进行 ' 与 ' 运算,即可得到目标主机所在的网络号,又由于每台主机在配置 TCP/IP 协议时都设置了一个本机 IP 地址与子网掩码,所以可以知道本机所在的网络号。
通过比较这两个网络号,就可以知道接受方主机是否在本网络上。如果网络号相同,表明接受方在本网络上,那么可以通过相关的协议把数据包直接发送到目标主机;如果网络号不同,表明目标主机在远程网络上,那么数据包将会发送给本网络上的路由器,由路由器将数据包发送到其他网络,直至到达目的地。在这个过程中你可以看到,子网掩码是不可或缺的!
既然子网掩码这么重要,那么它是如何分离出 IP 地址中的网络地址和主机地址的呢?
过程如下:
1. 将 IP 地址与子网掩码转换成二进制;
2. 将二进制形式的 IP 地址与子网掩码做 ' 与 ' 运算,将答案化为十进制便得到网络地址;
3. 将二进制形式的子网掩码取 ' 反 ' ;
4. 将取 ' 反 ' 后的子网掩码与 IP 地址做 ' 与 ' 运算,将答案化为十进制便得到主机地址。
下面我们用一个例子给大家演示:
假设有一个 I P 地址: 192.168.0.1
子网掩码为: 255.255.255.0
化为二进制为: I P 地址 11000000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000
将两者做 ' 与 ' 运算得: 11000000.10101000.00000000.00000000
将其化为十进制得: 192.168.0.0
这便是上面 IP 的网络地址,主机地址以此类推。
小技巧:由于观察到上面的子网掩码为 C 类地址的默认子网掩码(至于为什么,可看后面的子网掩码分类就明白了),便可直接看出网络地址为 IP 地址的前三部分,即前三个字节,主机地址为最后一部分。
Medium access control (MAC)介质访问控制
MAC地址
在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC位址。因此一个网卡会有一个全球唯一固定的MAC地址,但可对应多个IP地址。
在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。比如,著名的以太网卡,其物理地址是48bit(比特位)的整数,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。以太网地址管理机构(除了管这个外还管别的)(IEEE)(IEEE:电气和电子工程师协会)将以太网地址,也就是48比特的不同组合,分为若干独立的连续地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。
形象的说,MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。
那为啥需要mac呢?
我们知道在有线局域网中多个主机共享一个线路,这叫做复用。那么所有主机都可以在任何时间访问这条线路吗?显然是不能的。在任意时间里面,都只能有至多一个主机访问这个线路,否则会造成冲突,错帧。这就涉及到了竞争,什么时候一个用户才能抓到线路的使用权。
我认为对于这类的竞争信道,对于任何一个主机,应该重点考虑三个问题:第一,什么时候我可以访问信道?这涉及到访问时机的问题。第二是冲突的检测。因为冲突是很难避免的,必须有必要措施能检测到冲突,这对于进一步处理这个冲突是必要的。第三是冲突处理。冲突之后应该怎么去处理这个冲突?这都是协议应该考虑的问题。
ALOHA协议:
——纯ALOHA协议:只要用户有数据要发送,就尽管让他们发送。不进行任何检测就可以发。
→如果在一段时间内没有收到确认,该站点就认为传输过程中发生了冲突。
→发送站点需要等待一段时间后再发送数据,直到发送成功。
信道利用率最高为18%
CSMA协议“Carrier-sense multiple access”(载波监听多路访问)
——CSMA是ALOHA的基础上提出的一种改进协议,一ALOHA的主要区别是,多了一个载波侦听装置。
——载波监听:任何连接到介质的设备在欲发送帧前,必须对介质进行侦听,当确认其空闲时,才可以发送。(总线上并没有什么“载波”,载波监听就是用电子技术判断总线上有没有其他计算机发送数据。)
——多路访问
:多个设备可以同时访问介质,一个设备发送的帧也可以被多个设备接收。
Even with CSMA, collisions occur if two nodes start transmitting at “the same” time,How similar do the times have to be?
带冲突检测的CSMA - CSMA/CD
CSMA/CD的引入原因
有时候冲突无法避免。当两个帧发生冲突时,两个被损坏帧继续传送毫无意义,而且信道无法被其他站点使用,对于有限的信道来讲,这是很大的浪费。如果站点边发送边监听,并在监听到冲突之后立即停止发送,可以提高信道的利用率,因此产生了CSMA/CD
——CD碰撞检测:就是边发送边侦听,即适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站点是否也在发送数据。
——CSMA/CD的工作流程可概括为:先听后发,边听边发,冲突停发,随机重发。
ETHERNET以太网
经典以太网,运行速度:3-10Mbps
交换式以太网,使用了交换机,运行速度:100, 1000, and 10,000 Mbps,称为:高速以太网, 千兆以太网, 万兆以太网,以太网和802.3几乎完全一致
用 CSMA/CD 来检测冲突
经典以太网(Hub)
冲突(collision)是如何检测的? 以太网框架网桥(Bridge)
也称为桥接器,是连接两个局域网的存储转发设备,用它可以使完全具有相同或相似体系结构网络系统的连接,这样不但能扩展网络的距离或范围,而且可提高网络的性能、可靠性和安全性。网桥工作在OSI参考模型的数据链路层(第二层),将两个LAN连起来,根据MAC地址来转发帧,可以看作一个“低层的路由器”(路由器工作在网络层,根据网络地址如IP地址进行转发)。
以太网交换机
以太网交换机的每个接口都直接与主机相连,并且一般都工作在全双工方式。
交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,进行无碰撞地传输数据。
以太网交换机由于使用了专用的交换结构芯片,其交换速率就较高。
WiFi (IEEE 802.11) cannot use CSMA/CD or Aloha
CSMA/CACarrier Sense Multiple Access with Collision Avoidance)
当一个主机要发送消息之前首先要进行监听信道。不论是否信道为忙,发送端必须以一个帧间间隔的等待来开始自己的发送(等待Ack)。具体为:当信道为空的时候,首先等待一个帧间间隔,之后再监听信道,如果还为空,那么开始一个随机后退过程,随机后退过程之后,再次监听,如果还为空,那么就开始发送。在上述等待过程中,如果任何时候出现信道忙的情况,那么终止上面的等待过程,并等待信道为空,之后重复上面的过程(从等待一个帧间间隔开始)
CSMA/CA vs CSMA/CD 比较
• CSMA/CA requires ACKs – CDMA/CD did not use them
• Ethernet assumed most collisions could be detected
Can limit maximum segment length (attenuation, time)
Transport layer recovers the rest
Slow (timeout, 3 dup ACK), causes TCP CWND reduction
• Wireless CSMA/CA cannot detect collisions
Dynamic range problem mentioned earlier
Can’t limit segment size
Nodes scattered over entire suburbs
Networks with different SSIDs (names) still share the same channel
Can’t even guarantee CSMA works, giving…
但是CSMA/CA不能解决Exposed Terminal 问题
Hidden / exposed terminals
Mobile phone protocols
Wireless LANs
802.11b: 支持1,2,5.5,11Mbps速率,工作在2.4GHz
802.11g: 支持54Mbps速率,工作在2.4G
802.11a: 支持54Mbps速率,工作在5GHz
802.11n: 支持600Mbps速率,采用4根天线
802.11ac: 支持1300Mbps速率,采用8根天线
CSMA with Collision Avoidance (CSMA/CA)
The 2.4-Ghz and 5-Ghz bands 不需要牌照免费使用 (unlike mobile frequencies, which are very expensive to buy) certain power limits (1 W)
802.11 安全性
• Authentication and Security tied together
– In the same way as a wired connection frames can be blocked and
spoofed – requires being able to overpower the original signal
• Open – no authentication or encryption
– All traffic is visible
• WEP – Wired Equivalent Privacy
– Key is 40 – 100 bits – RC4 encryption
– Easy to crack by capturing packets
– (40,000 packets – 3 mins to capture – 3 seconds to crack key)
• WPA – WiFi Protected Access
– Temporal Key Integrity Protocol (TKIP) – each packet has a unique key
– Attacks focused on recovery of small amounts of data – not access
– Best access attacks were directed at brute forcing weak passwords
• WPA2 – Updated version of WPA
– Uses AES to counter the weakness in WPA1
– Was considered secure until KRACK attack in
2017: https://www.krackattacks.com/
• KRACK attack was against the WPA2 protocol, not a specific implementation
– Key reinstallation attack – keys should only be
used once, otherwise they are susceptible to
attack
– The attack was against the 4-way handshake
used in WPA2 to negotiate a key. The third
message may be resent in case of loss, each
time the client received message 3 it would
reinstall the key, causing a reuse of key
material
SSID和BSSID
1)基本服务集(BSS)
基本服务集是802.11 LAN的基本组成模块。能互相进行无线通信的STA可以组成一个BSS(Basic Service Set) 。如果一个站移出BSS的覆盖范围,它将不能再与BSS的其它成员通信。
2)扩展服务集(ESS)
多个BSS可以构成一个扩展网络,称为扩展服务集(ESS)网络,一个ESS网络内部的STA可以互相通信,是采用相同的SSID的多个BSS形成的更大规模的虚拟BSS。连接BSS的组件称为分布式系统(Distribution System,DS)。
3)SSID
服务集的标识,在同一SS内的所有STA和AP必须具有相同的SSID,否则无法进行通信。
SSID是一个ESS的网络标识(如:TP_Link_1201),BSSID(Broadcast MAC address)是一个BSS的标识,BSSID实际上就是AP的MAC地址,用来标识AP管理的BSS,在同一个AP内BSSID和SSID一一映射。在一个ESS内SSID是相同的,但对于ESS内的每个AP与之对应的BSSID是不相同的。如果一个AP可以同时支持多个SSID的话,则AP会分配不同的BSSID来对应这些SSID。
BSSID(MAC)<---->SSID
无线接入过程三个阶段
STA(工作站)启动初始化、开始正式使用AP传送数据帧前,要经过三个阶段才能够接入(802.11MAC层负责客户端与AP之间的通讯,功能包括扫描、接入、认证、加密、漫游和同步等功能):
1)扫描阶段(SCAN)
2)认证阶段 (Authentication)
3)关联(Association)
Scanning
802.11 MAC 使用Scanning来搜索AP,STA搜索并连接一个AP,当STA漫游时寻找连接一个新的AP,STA会在在每个可用的信道上进行搜索。
1)Passive Scanning(特点:找到时间较长,但STA节电)
通过侦听AP定期发送的Beacon帧来发现网络,该帧提供了AP及所在BSS相关信息:“我在这里”…
2)Active Scanning (特点:能迅速找到)
STA依次在13个信道发出Probe Request帧,寻找与STA所属有相同SSID的AP,若找不到相同SSID的AP,则一直扫描下去..
Authentication
当STA找到与其有相同SSID的AP,在SSID匹配的AP中,根据收到的AP信号强度,选择一个信号最强的AP,然后进入认证阶段。只有身份认证通过的站点才能进行无线接入访问。AP提供如下认证方法:
1)开放系统身份认证(open-system authentication)
2)共享密钥认证(shared-key authentication)
3)WPA PSK认证( Pre-shared key)
4)802.1X EAP认证
link layer 链路层
链路层的作用
• Framing: parse a sequence of bits into frames(传输)
• Error control: correct bit errors, or discard errored frames(冲突)
• Flow control: Stop sender sending if the receiver is not ready to receive
• Same as the transport layer, but point-to-point (two sides of a link) not end-to-end (over the whole network)
• Error detection is much more important(检测冲突)
网友评论