数据链路层,以太网

一、数据链路层

(1)数据链路层和网络层的不同:网络层侧重于整体一个点到另一个点之间的一条路径,数据是如何到达的。而数据链路层则侧重于其中的每一个小区间上的传递。用于两个设备(同一种数据链路节点)之间进行传递。

(2)“同一种数据链路”:手机通过路由器上外网,手机与路由器之间通过无线网WiFi的方式进行传输的,这是一种数据链路;数据通过以太网线和运营商路由器相连,这也是一个数据链路;运营商路由器通过光纤和其他的路由器相连,这也是一种数据链路。

(3)常见的数据链路:

A、以太网线(插网线的);

B、WiFi(无线路由器);

C、蓝牙(也是一种无线通信协议,带宽小,能耗小);

注:我们平时用的数据3G/4G,并不是一种数据链路层协议,而是和TCP/IP协议栈并列一整套协议栈标准。

二、以太网:

以太网是一种协议,一种标准,不仅涵盖了数据链路层,也包含了一些物理层的内容。 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;

平时用的网线就叫做以太网线,以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;

以太网是当前应用最为广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等;

1、以太网的帧格式

A、目的地址,源地址:MAC地址。(IP地址和MAC地址都是用来唯一的标识一台主机的,他们的功能有一定的重复性,又有各自的侧重:IP地址是描述整体发送过程中发送的起点和目标的终点;MAC地址需要顾及到传输过程中的每个相邻的数据链路上所对应的一个节点。)【IP协议和以太网帧协议是相互各自独立的,设计IP地址的时候不知道以太网帧的存在,设计以太网帧的不知道IP地址的存在双方都想尝试去表示唯一的一个IP】源地址和目的地址都为6个字节(IP地址的源端口号和目的端口号都为4个字节,MAC地址的源端口号和目的端口号比IP地址的源端口号和目的端口号多(2^48-2^32)=65535倍。MAC地址很多,不需要考虑重复的情况,基本上是够用的,所有设备,都有一个唯一的MAC地址。MAC地址在设备网卡设备一生产好,就设置好了。)【一般MAC地址是唯一的,但是也可以通过虚拟机虚拟出一个MAC地址】

B、类型:表示以太网帧是个什么样的帧,是用来做什么的帧【类型取值0800,后续的数据就是一个IP数据报;类型为0806,后续的不是一个IP数据报,而是一个ARP请求。】

C、数据

D、CRC:校验和

对于以太网帧数据部分最长为1500个字节(数据段的最大长度MTU),最短为46个字节。【 分包:ip数据报超过1500个字节一个以太网帧放不下了,需要多个以太网帧,并且每个以太网帧的数据部分都要承载以一个IP数据报。同一个包拆分成的若干个包的序列号相同。】。

MTU对UDP的影响:如果IP数据报使用的是UDP协议格式,一个以太网帧拆分成两个以太网帧,相当于UDP数据被拆分成了两份。那么是一个以太网帧的丢包概率大,还是两个以太网帧的丢包概率大?【两个以太网帧的丢包概率大,随着拆分的以太网帧越多,UDP数据报丢包的概率越大。

MTU对TCP协议的影响:若是传输层使用TCP协议,虽然丢包,但是TCP有重传机制,则影响不大。TCP若是想限制以太网帧的拆分,TCP的选项中有一个MMS,表示一个TCP数据报最多装多少个字节不用拆分成多个以太网帧。

以太网帧:【帧头 MTU支持的最大长度(MMS) 帧尾】:此时TC支持的MMS表示在MTU的限制下TCP的报头和TCP的数据最多能是多少。也就是“MTU-IP的header长度-TCP的header长度”。

查看MAC地址和MTU:ifconfig指令

2、ARP协议:通过IP地址查找MAC地址(通过IP地址指定把数据发送到哪,在数据链路层是通过MAC地址进行转发,我们得知道IP地址和MAC地址如何映射,ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.(不只是数据链路层得协议,是基于数据链路层和网络层之间得协议。)

(1)工作流程:主机往局域网里面广播一个ARP请求,凡是收到了ARP请求得主机,都返回一个ARP的应答,而应答中包含了我们当前IP地址对应的主机的MAC地址是谁。

a、源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求广播到本 地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播); 

b、目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主 机,将自己的硬件地址填写在应答包中; 

c、每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分 钟)【网络的拓扑时间会发生改变】,如果20分钟内没有再次使用某个表项,则该表项失效,【重新申请】,下次还要发ARP请求来获得目的主机的硬 件地址。

三、其他协议或技术

1、域名系统:

DNS是一整套从域名映射到IP的系统
(1)把IP地址和对应的网站记录在电脑上的hosts文件里

 

如果要打开一个网站,就打开电脑上的hosts文件,此过程不用手动打开,在配置文件中配置了映射关系,浏览器中输入域名,就会自动搜索到ip地址(浏览器自动完成)【适用于网站不多的情况】

(2)但是随着互联网的发展,不停的有新网站的出现,也有旧网站的消亡(或者服务器坏了),hosts文件记录则会出现问题。于是,将记录放到某一台服务器上,谁需要使用这些记录就去服务其中查询,不用手动维护,有专人维护(很权威的人:申请域名,销毁域名都得去这个人那儿登记),这是现在的DNS的记录方法。

(3)万一上述(2)中记录的服务器坏了,(或者访问其他国家的域名,来回的时间太长),就会出现一些问题。所以这种服务器不只是只有一台,而是按照分布式的方式进行部署,并行按照域名的级别进行分级。

域名的部署结构:

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称.

www.baidu.com//二级域名

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

b、baidu: 二级域名, 公司名. 

c、www: 只是一种有历史背景的习惯用法. 之前人们在使用域名时, 往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样 的格式, 来表⽰示主机支持的协议.
(4)DNS部署的情况按照逐级部署

缓存可用于:程序优化执行性能,计算机从磁盘上读取文件(访问文件也有一部分数据在内存中缓存),cpu从内存中读数据时也有一部分数据在cpu缓存中。

a、每个层的域名上都有自己的域名服务器. 最顶层的是根域名服务器(最顶层,可以查到每一级的域名)

【为了使整体的性能更好,可用性更高,部署了很多一级域名】

b、每一级域名服务器都知道下级域名服务器的IP地址

c、为了容灾, 每一级至少设置两个或以上的域名服务器.

浏览器中输入url会发生的事情?(关于百度)

第一步:经过域名解析,获取ip地址
(1)先通过hosts文件查看ip
(2)如果hosts文件不存在,通过浏览器缓存来进行域名查找
(3)如果浏览器缓存也找不到,通过DNS服务器逐级进行查找
第二步:浏览器基于TCP协议进行三次握手建立连接并发送Http请求(这个请求是基于传输层的,会经过路由,最终到达服务器的ip。域名解析之后,把域名转化为了ip地址,浏览器(通过HTTP协议请求服务器,基于TCP协议)和客户端拿着这个ip地址就可以进行通信了

第三步:请求先经过运营商的CDN服务器来看看是否在CDN上有缓存数据,如果有就直接拿到结果返回给浏览器。如果没有再继续往后转发

第四步:请求打到百度机房的入口服务器上,可能会在这样的反向代理服务中命中缓存,一旦命中就直接返回,否则才往后转发。

第五步:根据百度产品线的不同,决定把请求发送到不同的应用服务器上。不同的应用服务器计算逻辑差别非常大,但是总体的原则都是根据输入请求的内容来计算出一个合适的HTTP响应报文。

CDN服务器:运营商为了加快网络的访问速度专门在附近部署的路径,保存了常用网站对应的资源

四、ICMP协议:ICMP协议是一个 网络层协议,帮助我们进行网络连通性的诊断。机器能否正常联网。
1、功能:
a、确认IP包是否成功到达目标地址.
b、通知在发送过程中IP包被丢弃的原因.
c、ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
d、ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6
2、ICMP进行网络诊断的过程:
因为是一个网络层协议,所以ICMP描述网络的地址也是使用IP地址进行描述的。当主机发送一个IP数据报时,得首先获取其IP地址,先通过ARP请求以广播得形式知道当前得IP地址对应得MAC地址是什么,才能进行数据得传输。ICMP报文也需要包裹到一个MAC中。如果发现对端得电源断开了,导致没有收到应答。过一段时间后,若是还没有应答,则给发送端返回一个目标没有应答得信息。使用ICMP,不仅可以告知发送端是否可以应答,还可以告知发送端不能应答的原因。
3、数据报头的格式:
(1)

a、类型:不同的类型对应不同的功能(分为两类:一类是通知出错原因 ;一类是用于诊断查询)
b、代码:在当前的控制下是成功还是失败,返回结果信息
c、校验和
d、不同类型和代码有不同的内容
(2)ping指令是基于ICMP的,通过该指令可以验证当前网络是否畅通。“ping 一个网址”:可以返回该网页的ip地址,字节,以及时间(即网络,时间越小网速越快,),网络状态过差可能出现丢包,可以用ping指令验证(可以多ping几次,查看丢包率,丢包的情况下一般可以看视屏,因为视频是缓存的,但是对于实时性比较高的则不适用,比如联网的游戏)。【如果qq能连接上网,而网页打不开是为什么呢?qq能连上,说明网络是联通的,但是网页打不开,则可能是DNS的解析过程出现了错误。】,TTL表示一个ping指令最多在网络中存在的时间。
a、此处 ping 的是域名, 而不是url,一个域名可以通过DNS解析成IP地址(域名只是url的一部分)
b、ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, ip数据报的生存周期,一个IP地址最多经历64跳就结束了).
c、ping命令会先发送一个 ICMP Echo Request给对端;
d、对端接收到之后, 会返回一个ICMP Echo Reply。
问题:telnet是23号端口,ssh是22端口,那么ping是什么端口?答:端口号是传输层的,ping指令对应的是网络层,所以不能用端口号来衡量ping指令。网络层没有端口号。
(3)traceroute指令:不仅可以知道主机发送端和接收端之间能否连接得通,还可以把发送端和接收端之间每一个路由器都打印出来。
五、NAT:应对当前计算机系统IP地址不够用得问题
互联网上,预期情况下,每个设备都有一个独立得,互不干涉得IP地址。但是IP地址不够用,就得想办法重用一部分IP地址,于是划分出若干局域网,局域网之间IP地址完全可以重复,每个局域网有一个统一得出口,在该出口进行IP地址得映射(分配一个IP地址服务于局域网中得所有主机),可以很好的提高IP地址的利用率。
1、IP地址转换:

2、NAT的缺陷:
a、无法从NAT外部向内部服务器建立连接(有些NAT设备支持手动配置转换表,这种情况下是可以连接到内网服务器的);
b、装换表的生成和销毁都需要额外开销;
c、通信过程中一旦NAT设备异常, 即使存在热备(备份,不需要手动干预,直接将流量切换到备份上), 所有的TCP连接也都会断开。
3、NAT和代理服务器的关系:
1)、代理服务器:在代理服务器上架构一个特殊的程序,使其可以对浏览器上请求的内容进行转发(翻墙)。
正向代理服务器:把请求转发给下一个服务器
反向代理服务器:把数据转发给原有的客户端
正向代理服务器和反向代理服务器只是方向不同,有可能存在同一个服务器既可以正向代理又可以反向代理。
2)、NAT和代理服务器的异同:
相同:路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程. 代理服务器看起来和NAT设备有一点像. 客户端向代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.
不同:
a、从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.
b、 从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往工作在应用层(在应用层手动实现).
c、从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网.
d、从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.
应用:
a、翻墙: 广域网中的代理.
b、负载均衡: 局域网中的代理. (当前互联网上较常见的方式)【应用服务器不只是一台而是一组,这一组机器部署的功能和程序相同,入口服务器会把请求均匀的打到给这一组服务器,每台机器承载的流量为“1/这一组服务器的个数”。防止一台服务器出现故障而网络挂掉的情况发送。)

fildder抓包的过程是发送请求时,先发送到fildder,然后再将请求发送出去,这就是抓包的原理。

【百度首页上打开F12,点击console,有惊喜哦得意!】

猜你喜欢

转载自blog.csdn.net/xuruhua/article/details/80708460
今日推荐