网络基础2(下):IP协议与MAC帧

 "你说不爱了,又依依不舍。"


(一)传输层(IP协议)

IP协议的基本概念

主机:配有IP地址,但是不进行路由控制的设备。

路由器:既配有IP地址,又进行路由控制。

节点:主机 && 路由器的统称。

所谓IP协议,就是实现主机 与 主机,跨网络的 通信!

(1)IP构成

 dst IP=目标网络(号)+目标主机(号)

如何找到IP? 

1.先找到主机所在的网络

2.在确定网络中,找到对应主机。 

(2)IP格式

认识任何报头,重中之重在于:
1.报头与有效载荷的分离。

2.有效载荷 交付上层哪个协议。 

①第一层

4位版本号:指定的IP协议的版本(IPV4)

4位首部长度:同TCP报头一样,每位 表示4字节的IP报头大小。

8位服务类型:4位TOS表示,'最小延时','最大吞吐量','最高可靠性'....

16位总长度:IP数据报的总长度。

为什么TCP不用携带16位的总长度,而UDP、IP都携带?         

根本上是因为TCP是面向字节流! 

②第三层 

8位生存时间(TTL):数据报到达目的地的最大报文跳数。每经过一个节点.--TTL。防止循环跳转。

8位协议:表示上层协议(如:TCP)。

16位首部校验和:使用CRC进行校验, 来鉴别头部是否损坏

下面的第三四层很简单,也就不过多赘述。

③IP报头第二层 与 MTU

我们知道IP协议具有实现主机与主机 跨网络通信的 能力。但是,拥有这种能力的根本,在于下层数据链路层(MAC帧)。

其中,MAC限定了其有效载荷的大小:MTU ==1500;因此,如果MAC的上层协议 传输的数据 > MTU(1500) ,那么就会自动把多余的部分丢失,这当然是不被允许的!

IP的分片与组装:

IP的分片与组装,仅仅由IP来进行处理。它的上、下层协议根本不关心!

16位标识: 唯一标识主机发送报文的id。


3位标志: 第二位标识禁止分片,数据字节超过MTU机会被丢弃。第三位为1,标识进行了分片。

为0,类似于一个结束的标致。

13为片片偏移: 分片后,每一个报文的段位置。

1.分片有没有可能丢包?有!

如何判断有没有可能丢包?(丢第一个 ,丢中间 , 丢最后一个)

2.如何判定多个分片的报文全部收到? 

上面条件都满足。也就说明分片报文已经全部收到。可以进行组装。 

3.MTU包含了什么? 

MTU=IP报头+IP数据

4.MTU 与 MMS:

MMS: 最大传输尺寸。在TCP握手阶段 建立。

 小结:

(2)网络分段 

在前面也提到过,IP地址分为两个部分,网络号和主机。

网络号:保证两个相连,但并不相同的 “网段”。

主机号:同一个网段内,网络号相同,但必须有唯一标识的主机号。

可以看出,不同的子网(局域网),可以把相同网络号,不同主机号的主机连接在一起。

子网中,每新增一台主机,则这台主机的网络号,和子网的一致。主机号必须和子网内,其他主机的主机号不同!

为什么要进行网络分段的划分?

 合理的网络化分设置:能够快速的确定目标报文是属于哪个网络。 根本目的就是为提高寻址效率。

①第一类网段划分方案 

可以看到,如果手动进行IP子网的管理,显然很麻烦。

在过去提出了五类IP地址的管理方法。

A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255

但是,这种方法很快就被淘汰掉。因为IP地址分配的粒度粗糙,给本来就有限的IP地址,造成了大量的浪费。

按照A类主机和网络号位的划分, 2^24这么数量庞大的主机数。然而在现实中,不会有一个网架结构的一个子网,存在这么多台主机。        

②第二类划分方案(CIDR) 

针对第一类网络划分存在大量的地址浪费问题,采用的新方案CIDR引入了 新的概念:"子网掩码"。

子网掩码也是一个32位的正整数. 通常用一串 "0" 来结尾;

将IP地址 与 子网掩码 “&”得到的就是网络号。

 因此,每个子网都有自己的子网掩码,通过子网掩码 & IP,得到网络号,确定目的IP是否在子网内! 

子网掩码在linux中查询: 

//命令行输入
ifconfig

(3)特殊的IP地址

①IP地址中的主机地址全部设置为0,就成了网络号,代表整个局域网。

②IP地址中的主机地址全设置为1,就成了广播地址。(后面会细讲 用于链路层传输的特点)。

③127.* (127.0.0.1) IP地址是用于本机环回。用于网络测试。---->仅仅贯穿协议栈

(4)IP地址数量的限制 

上面我们讲解了,采用CIDR来解决IP地址数量有限的问题。 

但实际上,IPV4的地址有限,只有2^32个。除去一些特殊的IP地址和 每一个MAC都需要配置一个或者多个IP地址。因此IP地址的数量并不如想象中的充足。 

IPV6:是IPV4的升级版,IPV4是一个4字节,32位的数。 但IPV6用16字节,128位表示一个IP地址。但这 两个版本IPV6不能很好兼容IPV4。因此,目前并未普及。

动态分配IP技术:只给接入的网络设备,随机分配一个IP地址。

NAT技术(后面详讲)。 

(5)私有IP和公有IP

IP地址 = 私有IP + 公有IP  这两者是隔断的!!! 

 私有IP和公有IP的区别,本质上就是区别 局域网 和 广域网。

如果是一个组织内部 组建的局域网,IP地址仅仅用于局域网内的通信,不会连接到Internet上,理论上任意IP都可以在局域网内使用。但是FC 1918规定了用于组建局域网的私有IP地址。

 局域网IP规则:

①10.*,前8位是网络号,共16,777,216个地址

②172.16.到172.31.,前12位是网络号,共1,048,576个地址

③192.168.*,前16位是网络号,共65,536个地址
上述均为私有IP!

 注:私有IP可以重复,但是公网IP不能重复! 

(6)运营商 VS 互联网公司的产品

可能大家在使用互联网公司提供产品的过程中,会有个疑问。为什么我们上网所需的流量(花费)交给的费用是给电信、移动而不是互联网公司?

本质上,是因为运营商为我们提供基础设施的建设、服务。 

 

这也就是为什么,当你欠话费,手机卡被停用时,再也无法从手机上访问QQ、微信.....其实就是运营商检测到你手机欠费没交钱,就直接把你的网络请求截断了。当你补上话费时,又可以对互联网产品进行正常使用了。

(7)初始路由器 

①LAN vs WAN

 

LAN和WAN是一个相对概念而不是绝对概念。 

②路由器功能 

我们知道,局域网的IP是 可以重复的。只要它不暴露在公网上。但同一个局域网内的主机号必须是不同的,因为需要确定主机的唯一性。

路由器是可以组建局域网的!

一个局域网内,路由器的主机  通常为1号。 

路由器具有将私有IP转发公有IP的能力!

任何一个私有IP经过WAN窗口 进入公网,都需要经过路由转发为公网IP(这个之后会详讲)。 

为什么私有IP不能出现在公网上?

本质上就是私有IP不能标识唯一一台主机。

路由器会自动替换掉原来的LAN IP为 WAN IP  (NAT技术) 

③路由 

所谓路由:就是在复杂的网络结构中, 找出一条通往终点的路线

路由的过程,就是根据 目的IP 对每个网络进行查找的过程。(查找依据)

底层的实现,就是根据数据链路层(MAC)一个节点一个节点的 "跳"。(查找方式)

路由的过程,正如问路的过程。

①跳到哪个子网。

②转发默认路由(本子网内没找到)。

③查到目标网络。 

 查路由表:

//命令行输入
route

注:路由表生成的算法可以由网络管理员静态维护,也可以通过一些算法自动生成。

例如:距离向量算法,LS算法、Dijkstra算法。 

 


(二)数据链路层MAC帧 

数据链路层的本质,就是两个设备(同一种链路节点)之间的传递。

如何理解 数据链路层(MAC) 与 网络层(IP)?

 因此数据传输的物理层,是由数据链路层处理的。

(1)再谈以太网 

1.“以太网" 它不是一种具体的网络, 而是一种技术标准(协议); 

不仅仅包含了数据链路层的内容 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
 

2.以太网是局域网应用最广泛的技术,其他技术如:令牌环网 、 无线LAN等..

局域网通信的本质:同一时间只允许一台主机 在局域网内传输数据。 

一个局域网内,MAC地址是固定的。

(2)认识MAC地址

①MAC地址用来识别数据链路层中相连的节点。
②长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示。

③在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的。

如何理解MAC地址 和 IP地址?

IP记录是 起点 和 终点

MAC地址记录的是, 起点与终点路途中,经过的上、下节点 区间。

(3)MAC帧

①报头与有效载荷 

1.MAC帧格式采用的是定长报头。

2.向上交付的类型,由帧类型决定。 

目的地址/源地址:指的是网卡硬件地址(MAC),长度为48位,出厂后就固定了。

帧类型:IP(0800) 、 ARP(0806) 、RARP(8035)。

CRC:校验码

 注:PAD是废弃的数据,仅仅是用于填补46字节。

 

(4)再谈MTU

IP数据报需要进行分片,根本原因就在于MAC规定了能够负载的字节最大值。

MAC字节负载范围(46 ~ 1500);

最小值:ARP数据包的长度不够46字节时,要在后面补填充(PAD)。

最大值:1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;

1.如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片。
2.不同的数据链路层标准的MTU是不同的;

①MTU对IP的影响

对IP毋庸置疑就是 分包、组装。

1.每个小包IP协议头的 16位标识(id) 都是相同的;(每片都有带有IP报头)。

2.每个小包的IP协议头的3位标志字段中。第2位置为0, 表示允许分片 ; 第3位标识 是否还有包。 
 

3.到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层(仅仅由IP协议完成)。

②MTU对UDP的影响 

对UDP的影响就比较粗暴。一旦UDP的数据报超过了MTU的最大限量。也就会在IP层进行分片,但是一旦数据产生丢包,数据重组就会失败。UDP并没有任何可靠性保障的机制,网络传输的丢失概率大大提高。

③MTU对TCP的影响

TCP虽然是面向字节流的,但其传输的最大尺寸,还是受制于MMS(Max Segment Size);

在进行握手的时候,双方主机会互相对MMS进行协商。

查看硬件MTU:
 

ifconfig

 


 

(5)ARP协议

我们知道了目的IP地址,然而网络协议栈是自定向上的,需要不断地封包解包。对端的最底层是MAC帧,在之前我们之间并未有过通信的前提下,该如何找到MAC帧的地址呢?

要强调的是, ARP不是一个单纯的数据链路层的协议,

而是一个介于数据链路层和网络层之间的协议。

 

 

①ARP协议的作用 

ARP协议建立了 主机IP  与 MAC地址的映射关系。也就是知道了对端的IP地址,就可以得到对方的MAC地址。

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢
弃;
因此在通讯前必须获得目的主机的硬件地址;

② ARP协议格式

硬件类型(链路层网络类型):1为,以太网;

协议类型(要转换的地址类型):0x800 为IP地址。

硬件地址长度:以太网地址 为固定的 6字节。

协议地址长度:IP地址 为固定4字节。

以上字段 基本上是默认不变的。

op:字段为1标识ARP请求,字段为2表示ARP应答

 

③ARP协议的模拟

发送主机,以一对多的方式 向网络内的所有主机发送ARP请求,并等待应答。 

目标主机,收到请求ARP后,以一对一的方式,将ARP响应 

 一个主机获取到ARP帧类型,首先需要选择看哪一部分?OP!

 为什么?

因为同一时间,一台主机不仅仅是和一台主机进行通信。

如果是要检查IP是否一致,无疑是要将ARP的有效载荷交付上层IP判断。显然不合理。

也就是本该在数据链路层 就可以判断丢弃的报文,还要交付给上层进行判断丢弃,占用资源空间。

 

④ARP的优化 

可以想象,庞大的网络系统里,拥有众多的局域网。

如果每一个跨网络的主机间进行通信,都要先去发起ARP请求,在收到响应后才能接收数据,未免会影响效率。

因此每台主机都会维护一个ARP缓存表。用来记录一定时间内,维护两台主机的MAC地址。

//查看ARP缓存表
arp -a


 

(三)其他重要协议与技术

(1)DNS(Domain  Name System)

DNS是一整套从域名映射到IP的系统。

①为什么要有DNS?

我们在使用TCP/UDP提供的IP地址 + 端口号来确定网络上的唯一一台主机 和 程序。

但是IP地址不好记忆。

换句话说,也就是现在的搜索引擎 

②DNS(域名)简介

www.baidu.com;

com:一级域名表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等

baidu:二级域名, 公司名.
www: 只是一种习惯用法.

(2)ICMP协议

这是一个网络层协议。

一个新搭建好的网络,往往需要进行测试。IP协议是不保障传输的可靠的,丢包后并不知道。

①确认IP包是否成功到达目标地址.
②通知在发送过程中IP包被丢弃的原因.
③ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
④ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6。

①ping命令 

当给对端发送一个ping命令,可以检查对方是否在线。

此时,如果对方在线,也会自动返送 ICMP Reply进行 回响。 

注:ping 命令 ping的是域名  

一个值得注意的坑:

telnet是23端口, ssh是22端口, 那么ping是什么端口?
 ping根本就没有什么端口可言,因为ping命令基于ICMP,端口号是传输层\应用层关心的内容。

traceroute

能够打印出可执行程序主机,一直到达到目的IP之前经过的路由器。

 

(3)代理服务器 

代理服务器,更像是一副套子。

①正向代理服务器

②反向代理服务器 

 

(4)NAT技术

之前我们讨论了,IP地址的数量是有限的。

为应对IP地址数量不足的问题,提供了几套解决方案。

1.IPV6升级 2.动态地址分配 3.CIDR(子网掩码) 4.NAT<最主要的手段> 

①再谈路由器 

路由器最重要的一个功能,是支持了NAT技术。在前面也讲了,一个路由器配有LAN端口 、WAN端口。一个私有IP地址的主机,向跨网络实现通信,需要经过路由器,并进行路由转发,从私有IP地址,变为公网IP地址........ 当然这是浅显的理解

 

②NAT 转换 IP(发出)

 

 ③NAPT(接收)

如果此时,有多台主机向同一个外网服务器发起请求。当外网服务器响应时,发现每个的IP都是同一个位置。(进程间通信) 那此时该如何解决呢?

内网+端口号的映射关系! 

④NAT技术的缺陷 

①NAT技术无法 从外部向内部 建立连接。

②装换表的过程,销毁 需要开销。

③一旦NAT设备出问题,一切TCP连接都会断开。

(5)NAT vs 代理服务器 

从应用上来说:

NAT技术主要解决的是 IP不足的问题。代理服务器多用于翻墙 加速器....

从底层实现来说:

NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层.

从使用范围:

NAT多部署在路由器(局域网)出口,代理服务器既可以部署在局域网,也可以部署在广域网。

根本上,NAT更像是硬件层面的,代理服务器多用于软件层面。

 


总结

①IP构成:网络号(IP)+主机号

②IP协议的格式与 分片+组装

③网络分段,子网掩码(netmask)。

④MAC地址:固定的网卡地址 6字节 48位

⑤MTU 与 MMS\TCP\IP\UDP

⑥ARP协议报头 应答请求

⑦DNS域名解析 ICMP IP传输的可靠性保障

⑧代理服务器 vs NAT技术。

⑨路由器功能:创建局域网 、DHCP技术动态分配IP地址 、支持NAT技术

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值