当前位置:网站首页>数据链路层 && 一些其他的协议or技术
数据链路层 && 一些其他的协议or技术
2022-06-24 19:25:00 【programing菜鸟】
网关(getway):从一个网段到另外一个网段,可能要进行协议转换,而网关就负责协议转换。现在,网关一般是路由器的IP地址。
默认网关:一般是路由器的IP地址。
- 我们说到IP协议可以帮助我们将数据从一台主机发送到另外一台主机,但实质工作的是数据链路层的以太网协议,IP协议具有宏观指导作用。
- MAC地址用来控制下一跳的位置,IP地址用来指明最终方向。
局域网
栗子:
我在一间有很多学生的教室中跟张三讲话,那么别的同学也有可能互相聊天。别人就可能打扰到我和张三,而我们也可能打扰到其他的人。
- 这里的教室就可以理解为局域网。每个人就是一台主机。
- 我们将通信时候的互相干扰称之为碰撞。
- 当我和张三两台主机之间想要进行通信时,就需要先进行碰撞检测,查看是否有别的主机正在进行通信。
- 当没有人说话了,我再和张三通信,这叫做碰撞避免。
- 碰撞避免是有效率损失的,但是信号是光速传播的,可以忽略损耗。
- 为了减少碰撞,我们会使用一种设备叫做交换机,用来划分碰撞域。
以太网
”以太网“是一种协议,局域网技术标准。“以太网” 不是一种具体的网络。 它既包含了数据链路层的内容, 也包含了一些物理层的内容。
以太网帧格式

以太网要添加以太网定长报头和CRC校验。
因为报头是定长的,所以很轻松就可以与有效载荷分离。
前6个字节是目的MAC地址。下6个字节是自己的MAC地址.MAC地址是主机出厂的时候设置的,可以认为全球唯一。
类型用来表示应该交付给上层的哪个协议,即分用。0800代表交给IP协议,0806代表ARP请求/应答,8035代表RARP请求/应答。
一台主机在发送MAC帧的时候,它直接将MAC帧放到局域网中,局域网中所有的主机都可以收到该帧,然后所有主机开始在数据链路层解包,对比MAC地址后发现不是发给自己的,那么就直接丢弃。
MAC地址
- MAC地址用来识别数据链路层中相连的节点 ;
- 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)。
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)。
MAC地址和IP地址:
- 报文在传送的时候,目的MAC地址和源MAC地址一直在变化,但是目的IP地址不会改变。
(唐僧的栗子)
MTU
- 不想多说,感觉前面都说烂了。。。
- 因为以太网协议规定了MTU,虽然IP层可以分片,但是我们不提倡分片,因为分片会增加丢包率。所以我们期望上层的所有协议来适应MTU,即上层尽量不传送大包给下层。
tcp的MSS
- TCP的一个数据报也不能无限大, 还是受制于MTU。TCP的单个数据报的最大消息长度, 称为MSS(Max Segment Size);
- TCP在建立连接的过程中, 通信双方会进行MSS协商。
- 最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU).
- 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。
- 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS。
- MSS的值就是在TCP首部的40字节变长选项中。
注意:MSS是tcp报文的最大长度!!!
ARP协议
以太网可以通过MAC地址来发送数据,但是有一个问题:我怎么知道目的主机的MAC地址?
- 而ARP协议的作用就是将IP地址转换成MAC地址。
- ARP协议也属于链路层,但是它位于以太网协议上层。实际上,ARP协议位于那一层并不重要。重要的是它的作用。你可以理解为MAC帧如果是ARP请求/应答,那么向上不是交付给IP层,而是交付给ARP协议。
ARP协议报文格式:
- 前面14字节是以太网报头。
- 硬件类型指链路层网络类型,1为以太网;
- 协议类型指要转换的地址类型, 0x0800为IP地址,0x0860为ARP请求/应答,0x0835是RARP的请求/应答;
- 硬件地址长度对于以太网地址为6字节;
- 协议地址长度对于和IP地址为4字节;
- op字段为1表示ARP请求,op字段为2表示ARP应答。收到ARP报文要先看这个字段,分辨是ARP请求还是应答。
ARP协议工作原理:
主机之间进行通信时,知道对方的IP地址和端口号,但是我们需要知道路上所有节点的MAC地址。
ARP使用了MAC的广播地址,即48位全为F,那么局域网的所有主机都会接收到该报文,而且需要进行接收。交付给ARP层,ARP层先通过op分辨出这是一个ARP请求,然后通过ARP的目的IP知道是发送给自己的,随即就将自己的MAC地址传回。
但是如果每次我们想要通信都需要ARP拿到对方的MAC地址,这显然很蠢。所以我们有一张ARP缓存表,里面暂存着最近(一般是20分钟)使用过的MAC地址和IP地址的对应关系。
RARP协议
RARP协议是通过mac地址获得IP地址。
其他协议or技术
DNS
DNS工作在应用层。
DNS底层使用的是UDP协议。因为简单。
DNS的作用是将域名解析为IP地址。
我们上网是需要知道对方的IP地址的,但是IP地址难以记忆。所以我们就使用字符串(主机名或者域名)跟IP地址构建一对一的映射关系。上网只需要域名即可。
在之前,我们将这张映射表保存在每台主机中。当我们输入www.baidu.com,系统就会扫描映射表,找到www.baidu.com对应的IP地址,然后访问IP地址对应的服务器。
但是域名与IP地址的对应关系实在太多!!!
所以我们使用一台专门的DNS服务器,专门保存所有的域名和IP地址的映射表。当你输入www.baidu.com,浏览器会对DNS服务器发起一次请求,DNS服务器代替你来找到IP地址,传给你。然后浏览器再访问IP地址对应的服务器。
DNS系统
- 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系.
- 如果新计算机接入网络, 将这个信息注册到数据库中;
- 用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址.
但是每次访问DNS服务器会浪费效率,所以至今, 我们的计算机上仍然保留了hosts文件。在域名解析的过程中仍然会优先查找hosts文件的内容。
cat /etc/hosts
域名简介:
- com: 一级域名. 表示这是一个企业域名. 同级的还有 “net”(网络提供商), “org”(非盈利组织) 等.
- baidu: 二级域名, 公司名.
- www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议.(其实也可以省略掉)
我们自己的主机会配备DNS服务器的IP地址。我们也可以自己选择DNS服务器,如8.8.8.8
ICMP协议
- 网络层的协议,可以认为是IP的上层。底层使用IP。
- 搭建好网络之后,我们自然想知道网络是否连通。但是IP是没有可靠性的保证的。如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因。
这正是ICMP的作用:
- 确认IP包是否成功到达目标地址.
- 通知在发送过程中IP包被丢弃的原因.
- ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
- ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6;
ping 命令:
- ping命令基于ICMP协议。
- 此处 ping 的是域名, 而不是url!一个域名可以通过DNS解析成IP地址。
- ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期)。
- ping命令会先发送一个 ICMP Echo Request给对端;
- 对端接收到之后, 会返回一个ICMP Echo Reply;
- ping命令这种每隔几秒检测一次,叫做心跳检测。
traceroute命令
- 基于ICMP协议实现。
- 能够打印出可执行程序从源主机, 一直到目标主机之前经历多少路由器。
NAT && NAPT 技术
- NAT技术和NAPT技术都用于解决IPv4不足的问题。
- 我们先来谈一谈NAT技术。我们知道局域网的IP地址是私有地址,无法与外网访问。NAT技术就解决了这一问题。一个局域网会配备一个路由器(一个服务器也可以),而这个路由器会有一个WAN口IP地址,这个IP地址是外网地址。
- 当我们想访问外网时,路由器会建立一张A主机的IP地址和路由器外网的IP地址转换表,这样我们披着路由器的皮,通过转换IP数据包中的源IP地址,就能访问到外网的服务器。
- 如果外网想向我们回复,那么再通过路由器的转换表,重新转回来即可。

但是,有一个问题:一个局域网一般只有一个路由器, 而一个路由器一般只配一个WAN口地址。如果A主机和B主机同时和服务器通信,那么无法实现。**因为服务器同时给局域网的两台主机回复,那么根据转换表,无法确定路由器的外网地址应该转换成A还是B。**所以,为了解决外网IP地址太少,就有了NAPT技术。
NAPT:
- NAPT技术,在替换IP地址的时候,不仅仅替换外网的IP地址,路由器也会将报文对应的端口号也一并替换!!!
- 路由器建立的转换表也包括端口号,这样,即使只有一个外网IP,但是由于有大量的端口号,可以解决NAT的问题。

这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项。
NAT&&NAPT技术的缺陷:
- 无法从NAT外部向内部服务器建立连接;即NAT路由器不会主动建立连接,连接必须局域网主动发起,而无法通过外网直接访问局域网的服务器;两个局域网直接也无法实现直接通信;研究从外面突破局域网的技术叫做内网穿透
- 转换表的生成和销毁都需要额外开销;(显然)
- 通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开;
据我观察,我们现在所说的NAT技术就是NAPT技术,可以不做严格划分的。
代理服务器
- 代理服务器和NAT技术有点相似。
代理服务器和NAT的区别: - 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器。
- 从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层。
- 从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网。
- 从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上。
代理也分为正向代理和反向代理。
- 正向代理: 比如,我想访问facebook,但是直接从大陆访问不到。此时香港有一台服务器可以访问facebook,所以我们先将请求发送到香港的服务器,由香港的服务器代理我请求facebook。这里的香港服务器就是正向代理。
- 反向代理: 我想访问服务器某些信息,服务器给我提供信息,我不管这些信息从哪里来。
正向代理,客户端知道你的目的主机是谁,而反向代理不知道。正向代理的时候,我知道我们想访问facebook,而反向代理的时候我不需要知道具体谁给我的消息。
边栏推荐
猜你喜欢

123. 买卖股票的最佳时机 III

Oauth1.0 introduction

VirtualBox virtual machine installation win10 Enterprise Edition

Static routing experiment

大厂出海,败于“姿态”

Football information query system based on C language course report + project source code + demo ppt+ project screenshot

Memcached comprehensive analysis – 3 Deletion mechanism and development direction of memcached

TDengine可通过数据同步工具 DataX读写

Oauth2.0 introduction

虚拟机CentOS7中无图形界面安装Oracle(保姆级安装)
随机推荐
Analysis of BBR congestion control state machine
(待补充)GAMES101作业7提高-实现微表面模型你需要了解的知识
Simple analysis of WordPress architecture
Basic database syntax learning
how to install clustershell
Codeforces Round #720 (Div. 2)
力扣每日一题-第25天-496.下一个更大元素Ⅰ
data link layer
Pattern recognition - 9 Decision tree
XTransfer技术新人进阶秘诀:不可错过的宝藏Mentor
Alibaba cloud schedules tasks and automatically releases them
188. the best time to buy and sell stocks IV
ping: www.baidu. Com: unknown name or service
Rewrite, maplocal and maplocal operations of Charles
Decoration home page custom full screen video playback effect GIF dynamic picture production video tutorial playback code operation settings full screen center Alibaba international station
Oauth2.0 introduction
RFC 793 why to send reset and when to send reset
Golang reflection operation collation
Slider控制Animator动画播放进度
memcached全面剖析–3. memcached的删除机制和发展方向