计算机网络八股文

应用层

为用户直接提供服务
HTTP80 FTP20/21 SMTP25 TELNET DNS53 pop3110 DHCP

DNS协议

http协议

http协议是超文本传输协议。它是基于TCP协议的应用层传输协议,即客户端和服务端进行数据传输的一种规则。该协议本身HTTP 是一种无状态的协议。
非持续连接(短连接):每个TCP连接在服务器发送一个对象后关闭,即连接并不为其它的对象而持续下来。持续连接(长连接):服务器在发送响应后保持该TCP连接打开。

工作过程

1 ) 、地址解析,

 如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm

 从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
 协议名:http
 主机名:localhost.com
 端口:8080
 对象路径:/index.htm

  在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。


2)、封装HTTP请求数据包

 把以上部分结合本机自己的信息,封装成一个HTTP请求数据包


 3)封装成TCP包,建立TCP连接(TCP的三次握手)

   在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。这里是8080端口

 4)客户机发送请求命令

   建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。

 5)服务器响应

 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

    实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

 6)服务器关闭TCP连接

 一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码

Connection:keep-alive

TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

http状态码和对应的信息

1XX:接收的信息正在处理
2XX:请求正常处理完毕
3XX:重定向
4XX:客户端错误
5XX:服务端错误
常见错误码
200:请求成果
301:永久重定向
302:临时重定向
304:资源没修改,用之前缓存就行
400:客户端请求的报文有错误
403:表示服务器禁止访问资源
404:表示请求的资源在服务器上不存在或未找到
500:内部服务器错误

http请求方法

GET POST DELETE PUT HEAD

http1.0/1.1/2.0

http1.0
规定了请求头和请求尾,响应头和响应尾(get post)

每一个请求都是一个单独的连接,做不到连接的复用
http1.1
HTTP1.1默认开启长连接,在一个TCP连接上可以传送多个HTTP请求和响应。使用 TCP 长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。
支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。
服务端无法主动push

http2.0
提出多路复用。多路复用前,文件时串行传输的,请求a文件,b文件只能等待,并且连接数过多。引入多路复用,a文件b文件可以同时传输。

引入了二进制数据帧。其中帧对数据进行顺序标识,有了序列id,服务器就可以进行并行传输数据。

Get和post区别

1、get是从服务器上获取数据,post是向服务器传送数据
2、post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
3、post发送的数据更大(get有url长度限制)
4、post能发送更多的数据类型(get只能发送ASCII字符)
5、post比get慢
6、post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

post请求的过程:

浏览器请求tcp连接(第一次握手)
服务器答应进行tcp连接(第二次握手)
浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
服务器返回100 Continue响应
浏览器发送数据
服务器返回200 OK响应

get请求的过程:

浏览器请求tcp连接(第一次握手)
服务器答应进行tcp连接(第二次握手)
浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
服务器返回200 简述cookieOK响应

简述cookie

HTTP 协议本身是无状态的,为了使其能处理更加复杂的逻辑,HTTP/1.1 引入 Cookie 来保存状态信息。Cookie是由服务端产生的,再发送给客户端保存,当客户端再次访问的时候,服务器可根据cookie辨识客户端是哪个,以此可以做个性化推送,免账号密码登录等等。

当请求报文到达服务器时,服务器产生一个唯一识别码,并以此为索引在后端数据库产生一个表项。接下来服务器用一个包含SET-COOKIE首部的HTTP响应报文对客户端进行响应,其中set-cookie首部里面包含了生成的识别码。当浏览器收到响应报文后,会看到set-cookie首部,浏览器在管理的cookie文件中添加一行,这一行中包括了服务器主机名和识别码。当客户端再次发送请求时,浏览器会查询cookie文件并抽取识别码,放到http请求报文首部行中,服务器就可以根据cookie跟踪用户活动。

session

session原理:首先浏览器请求服务器访问web站点时,服务器首先会检查这个客户端请求是否已经包含了一个session标识、称为SESSIONID,如果已经包含了一个sessionid则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用,如果客户端请求不包含session id,则服务器为此客户端创建一个session,并且生成一个与此session相关联的独一无二的sessionid存放到cookie中,这个sessionid将在本次响应中返回到客户端保存,这样在交互的过程中,浏览器端每次请求时,都会带着这个sessionid,服务器根据这个sessionid就可以找得到对应的session。以此来达到共享数据的目的。 这里需要注意的是,session不会随着浏览器的关闭而死亡,而是等待超时时间。

https加密

​ HTTPS数据加解密过程中数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。HTTPS协议加密的过程可以分为两个阶段,分别是:

证书的认证阶段:使用非对称加解密算法对数据传送阶段的对称加解密密钥进行加密和解密。
数据传送阶段:通过证书认证阶段获取到目标服务器的对称加解密密钥,对数据进行加密传送给服务器。
加分回答

​ HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输。总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。

在整个HTTPS数据传输的过程中一共会涉及到四个密钥:

CA机构的公钥,用来验证数字证书是否可信任
服务器端的公钥
服务器端的私钥
客户端生成的随机密钥
一个HTTPS请求可以分为两个阶段,证书认证阶段和数据传送阶段。又可以细分为六个步骤:

客户端第一次向服务器发起HTTPS请求,连接到服务器的443(默认)端口。
服务器端有一个密钥对,公钥和私钥。用来进行非对称加密使用,服务器端保存私钥,不能泄露,公钥可以发送给任何人。服务器将自己的数字证书(包含公钥)发送给客户端。
客户端收到服务器端的数字证书之后,会对数字证书进行检查,验证合法性。如果发现数字证书有问题,那么HTTPS传输就中断。如果数字证书合格,那么客户端生成一个随机值,这个随机值是数据传输阶段时给数据对称加密的密钥,然后用数字证书中的公钥加密这个随机值密钥,这样就生成了加密数据使用的密钥的密文。到这时,HTTPS中的第一次HTTP请求就结束了。
客户端第二次向服务器发起HTTP请求,将对称加密密钥的密文发送给服务器。
服务器接收到客户端发来的密文之后,通过使用非对称加密中的私钥解密密文,得到数据传送阶段使用的对称加密密钥。然后对需要返回给客户端的数据通过这个对称加密密钥加密,生成数据密文,最后将这个密文发送给客户端。
客户端收到服务器端发送过来的密文,通过本地密钥对密文进行解密,得到数据明文。到这时,HTTPS中的第二次HTTP请求结束,整个HTTPS传输完成。

https和http的区别

1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)

2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

DHCP协议

当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。
在这里插入图片描述
第一步:Client端在局域网内发起一个DHCP Discover包,目的是想发现能够给它提供IP的DHCP Server。
第二步:可用的DHCP Server接收到Discover包之后,通过发送DHCP Offer包给予Client端应答,意在告诉Client端它可以提供IP地址。
第三步:Client端接收到Offer包之后,发送DHCP Request包请求分配IP。
第四步:DHCP Server发送ACK数据包,确认信息。

FTP协议

在这里插入图片描述
FTP客户可以传文件到FTP服务器,FTP客户也可以从FTP服务器下载文件。

工作原理:
FTP服务器监听端口号21,FTP客户随机选择一个临时端口号与其建立TCP连接,用于传送FTP的相关控制命令。当有数据要传输时,FTP通过命令通道告知FTP服务器来与自己的另一个临时端口号建立TCP连接。FTP服务器使用端口号20和它建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送文件。
控制连接在整个会话期间一直保持打开,用于传送FTP相关控制命令
数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭
在建立数据通道时,FTP服务器主动连接FTP客户成为主动模式。
被动模式:有数据要传输时,FTP客户通过命令通道告知FTP服务器开启某个临时端口被动等待TCP连接,建立数据通道。

SNMP协议

SNMP是简单的网络管理协议,。利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。

SNMP网络架构由三部分组成:NMS(网络管理站)、Agent(代理)、MIB(管理信息库)

1、NMS(网络管理站)
NMS是网络中的管理者,是一个利用SNMP协议对网络设备进行管理和监视的系统。
2、Agent
Agent是网络设备中的一个应用模块,用于维护被管理设备的信息数据,并响应NMS的请求,把管理数据汇报给发送请求的NMS。
3、MIB
任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB就是被管理对象的集合。

表示层

处理用户信息的表示问题,如编码,数据加密,对数据格式编译

会话层

为两个实体的表示层提供建立和使用连接的方法

传输层

提供端到端的差错,流量控制保证报文段正确传输
TCP UDP

区别

TCP提供的是面向连接的,可靠的字节流服务。提供超时重传,拥塞控制,流量控制等功能。支持一对一通信。TCP报文首部20个字节。
UDP提供的无连接的,不可靠的服务,提供差错检测服务对差错恢复无能为力。不提供超时重传,拥塞控制,流量控制等功能。支持一对一多、一对一通信。UDP报文首部8个字节。因为没有流量控制等功能,传输速度快于TCP。

应用场景

TCP文件传输(准确高要求高、但是速度可以相对慢)、接受邮件、远程登录。
UDP QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)。

TCP为什么可靠

1、通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。
2、TCP 报文头里面的序号能使 TCP 的数据按序到达
3、报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
4、TCP 拥有流量控制及拥塞控制的机制
5、TCP 的顺序问题,丢包问题,流量控制都是通过滑动窗口来解决的
6、拥塞控制时通过拥塞窗口来解决的

TCP三握手

第一次握手:客户端将标志位SYN置为1,随机产生一个值序列号seq=x,并将该数据包发送给服务端,客户端 进入syn_sent状态,等待服务端确认。
第二次握手:服务端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务端将标志位SYN和 ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给客户端以确认连接请求,服务端进入syn_rcvd状态。
第三次握手:客户端收到确认后检查,如果正确则将标志位ACK为1,ack=y+1,并将该数据包发送给服务端,服务端进行检查如果正确则连接建立成功,客户端和服务端进入established状态,完成三次握手,随后客户端和服务端之间可以开始传输数据了。
在这里插入图片描述

为什么三握手

防止已失效的连接请求又传到了TCP服务器,因而导致了错误。

TCP四挥手

第一次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入fin_wait_1状态。
第二次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1,服务端进入Close_wait状态。此时TCP连接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。
第三次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入Last_ack状态。
第四次挥手:客户端收到FIN后,客户端进入Time_wait状态,接着发送一个ACK给服务端,确认后,服务端进入Closed状态,完成四次挥手。
在这里插入图片描述

为什么TCP挥手需要4次

主要原因是当服务端收到客户端的 FIN 数据包后,服务端可能还有数据没发完,不会立即close。所以服务端会先将 ACK 发过去告诉客户端我收到你的断开请求了,但请再给我一点时间,这段时间用来发送剩下的数据报文,发完之后再将 FIN 包发给客户端表示现在可以断了。之后客户端需要收到 FIN 包后发送 ACK 确认断开信息给服务端。

为什么四次挥手释放连接时需要等待2MSL

设置2MSL可以保证上一次连接的报文已经在网络中消失,不会出现与新TCP连接报文冲突的情况。
在这里插入图片描述

流量控制

TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。 TCP会话的双方都各自维护一个发送窗口和一个接收窗口。接收窗口大小取决于应用、系统、硬件的限制。发送窗口则取决于对端通告的接收窗口。接收方发送的确认报文中的window字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将接收方的确认报文window字段设置为 0,则发送方不能发送数据。

拥塞控制

拥塞控制方法:慢开始( slow-start )、拥塞避免( congestion avoidance )、快重传( fast retransmit )和快恢复( fast recovery )。

慢开始
把拥塞窗口 cwnd 设置为一个最大报文段MSS的数值。而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。每经过一个传输轮次,拥塞窗口 cwnd 就加倍。 为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量。

当 cwnd < ssthresh 时,使用慢开始算法。

当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。

当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法。

拥塞避免
让拥塞窗口cwnd缓慢地增大,每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口cwnd按线性规律缓慢增长。

无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送 方窗口值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生 拥塞的路由器有足够时间把队列中积压的分组处理完毕。

快重传
有时个别报文段会在网络中丢失,但实际上网络并未发生拥塞。如果发送方迟迟收不到确认,就会产生超时,就会误认为网络发生了拥塞。这就导致发送方错误地启动慢开始,把拥塞窗口cwnd又设置为1,因而降低了传输效率。

快重传算法可以避免这个问题。快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认,使发送方及早知道有报文段没有到达对方。

发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待重传计时器到期。由于发送方尽早重传未被确认的报文段,因此采用快重传后可以使整个网络吞吐量提高约20%。

快恢复
当发送方连续收到三个重复确认,就会把慢开始门限ssthresh减半,接着把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大。

在采用快恢复算法时,慢开始算法只是在TCP连接建立时和网络出现超时时才使用。 采用这样的拥塞控制方法使得TCP的性能有明显的改进。

NAT原理

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)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。转换示意图如下。
在这里插入图片描述
如果内网主机发出的请求包未经过NAT,那么当Web Server收到请求包,回复的响应包中的目的地址就是私网IP地址,在Internet上无法正确送达,导致连接失败。

2.2 连接跟踪

在上述过程中,NAT Gateway在收到响应包后,就需要判断将数据包转发给谁。此时如果子网内仅有少量客户机,可以用静态NAT手工指定;但如果内网有多台客户机,并且各自访问不同网站,这时候就需要连接跟踪(connection track)。如下图所示:
在这里插入图片描述
在NAT Gateway收到客户机发来的请求包后,做源地址转换,并且将该连接记录保存下来,当NAT Gateway收到服务器来的响应包后,查找Track Table,确定转发目标,做目的地址转换,转发给客户机。

2.3 端口转换

以上述客户机访问服务器为例,当仅有一台客户机访问服务器时,NAT Gateway只须更改数据包的源IP或目的IP即可正常通讯。但是如果Client A和Client B同时访问Web Server,那么当NAT Gateway收到响应包的时候,就无法判断将数据包转发给哪台客户机,如下图所示。
在这里插入图片描述
此时,NAT Gateway会在Connection Track中加入端口信息加以区分。如果两客户机访问同一服务器的源端口不同,那么在Track Table里加入端口信息即可区分,如果源端口正好相同,那么在时行SNAT和DNAT的同时对源端口也要做相应的转换,如下图所示。(这里的理解灰常重要)
在这里插入图片描述

网络层

通过路由选择算法为数据包选择最适当的路径
ICMP RIP OSPF BGP

ICMP

在这里插入图片描述
应用ping命令,原理链接: link.

RIP

在这里插入图片描述
在这里插入图片描述
使用RIP协议更新路由表的一个例子:

在路由器B中的路由表有如下信息:
在这里插入图片描述
现在B收到从C发来的路由信息如下:

在这里插入图片描述
路由表B的更新步骤为
1、先将收到的路由表信息的下一跳设置为路由器C:
在这里插入图片描述
2、将收到的路由表信息全部加1:
在这里插入图片描述
3、将信息加进到路由器B的路由表中,更新规则如下:
(1 )无新信息,不改变

(2 )新的项目,直接添加

(3 )相同的下一跳,更新

(4 )不同的下一跳,距离更短则更新距离和下一跳地址,否则不变

更新后的路由表如下:

在这里插入图片描述

OSPF

在这里插入图片描述
基本原理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本工作过程:
1、相邻路由器之间周期性发送问候分组,建立和维护邻居关系。
2、建立邻居关系后,给邻居路由器发送数据库描述分组,也就是将自己来链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器,

例如:R1收到R2的数据库描述分组后,发现自己缺少其中的某些链路状态项目,于是就给R2发送链路状态请求分组,R2收到后,将R1缺少的链路状态项目详细信息封装在链路状态更新分组中发送给R1,R1收到后把缺少的链路状态项目的详细信息添加到自己的链路状态数据库中,给R2发送链路状态确认分组,最终R2 R1链路状态数据库达到同步。

3、每30分钟或者链路状态变化时就会发送链路状态分组,收到分组的其他路由器会洪泛转发该分组,并给该
路由器发送链路状态确认分组
在这里插入图片描述

BGP

在这里插入图片描述

数据报格式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对于比较大的数据IP是如何分片的

在这里插入图片描述
在这里插入图片描述

IPv6与IPv4的区别主要有以下几点

1.IPv6的地址空间更大。IPv4中规定IP地址长度为32,即有232-1个地址;而IPv6中IP地址的长度为128,即有2128-1个地址。夸张点说就是,如果IPV6被广泛应用以后,全世界的每一粒沙子都会有相对应的一个IP地址。
2.IPv6的路由表更小。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
3.IPv6的组播支持以及对流的支持增强。这使得网络上的多媒体应用有了长足发展的机会,为服务质量控制提供了良好的网络平台。
4.IPv6加入了对自动配置的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
5.IPv6具有更高的安全性。在使用IPv6网络中,用户可以对网络层的数据进行加密并对IP报文进行校验,这极大地增强了网络安全。

时延是指一个报文或分组从一个网络的一端传送到另一个端所需要的时间。它包括了发送时延,传播时延,处理时延,排队时延

数据链路层

通过各种控制协议将有差错的物理信道变成无差错,能进行可靠传输数据帧的数据链路。
ARP PPP

ARP过程(链路层或者网络层)

只能在一段链路或者一个网路上使用,不能跨网络使用

假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:
(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全1的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

ARP过程(不同网段)

不同网段的主机通信时,主机会封装网关(通常是路由器)的mac地址,然后主机将数据发送给路由器,后续路由进行路由转发,通过arp解析目标地址的mac地址,然后将数据包送达目的地。具体过程分析如下:
在这里插入图片描述
1、主机A有数据发往主机B,数据封装IP之后发现没有主机B的mac地址;然后查询ARP,ARP回应:“我在192.168.3.0/24网段,目标地址在192.168.4.0/24,不属于同一网段,需要使用默认网关”;ARP发现默认网关是192.168.3.2,但是没有网关mac地址,需要先进行查询;
2、主机将数据包先放到缓存中,然后发送ARP查询报文:封装自己的mac地址为源mac,目标mac地址写全F的广播地址,请求网关192.168.3.2的mac地址。然后以广播方式发送出去;
3、路由器收到广播数据包,首先将原192.168.3.1添加到自己的mac地址表中,对应mac地址为0800.0222.2222。路由发现是请求自己的mac地址,然后路由回复一个ARP应答:封装自己的IP地址为源IP自己的mac地址为源mac,主机A的IP为目的IP主机A的mac为目的mac,发送一个单播应答“我是192.168.3.2.我的mac地址为0800.0333.2222”;
4、主机收到应答后,将网关mac地址对应192.168.4.2(跨网关通信,其他网段IP地址的mac地址均为网关mac),然后将缓存中的数据包,封装网关mac地址进行发送;
5、路由收到数据包,检查目的IP地址,发现不是给自己的,决定要进行路由,然后查询路由表,需要发往192.168.4.0网段中的192.168.4.2地址。路由准备从相应接口上发出去,然后查询mac地址表,发现没有主机B的映射。路由器发送arp请求查询主机B的mac地址(原理同2、3步,主机B收到请求后首先会添加网关的mac地址,然后单播回复arp请求);
6、路由器收到主机B的mac地址后,将其添加到路由mac地址表中,然后将缓存中的数据2层帧头去掉,封装自己的mac地址为源mac,主机B的mac地址为目的mac(源和目的IP地址不变),加上二层帧头及校验,发送给主机B;
7、主机B收到数据之后,进行处理,发送过程结束;
8、如果主机B收到数据后进行回复,主机B会进行地址判断,不在同一网段,然后决定将数据发送给网关,主机B查询mac地址表获得网关mac地址,将数据封装后发送(arp地址解析的过程不再需要了,mac地址表条目有一定的有效时间),网关收到数据后直接查询mac表,将二层帧mac地址更改为A的mac发送出去。如此,主机A收到主机B的回复;
在这里插入图片描述

交换机STP协议

STP(生成树协议):就是把一个环形的结构变成一个树形的结构。STP协议就是用来将物理上存在环路的网络,通过一种算法,在逻辑上阻塞一些端口。
在这里插入图片描述

VLAN划分

在这里插入图片描述
实现机制(在交换机上实现)
在这里插入图片描述
在MAC帧上插入4字节的VLAN标记转变为802.1Q帧,打标签。
交换机转发802.1Q帧,可能会删除4字节的VLAN标记,转变位普通帧,去标签。
交换机各端口的缺省VLAN ID叫VLAN/PVID
在这里插入图片描述

物理层

以二进制数据形式在物理媒体上传输数据

交换机和路由器的区别

交换机主要服务在物理层和数据链路层,路由器服务在物理层、数据链路层、网络层
路由器:寻址,转发(依靠 IP 地址),交换机:过滤,转发(依靠 MAC 地址)
交换机用于局域网内网的数据转发,路由器用于连接局域网和外网

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值