计算机网络

文章目录

  • 计算机网络
    • 应用层
      • http和https
      • 对称加密、非对称加密和数字证书
      • socket
    • 传输层
      • 概念
        • 传输层的作用
        • 5类协议
        • 传输层寻址与端口
      • 协议
        • UDP
        • TCP
          • 解决问题
          • TCP协议的功能
          • 提供可靠性
          • 传输效率和流量控制-滑动窗口机制
          • TCP拥塞控制技术
          • TCP连接的建立与关闭
    • IP层
      • 概念
        • TCP/IP层次概念
        • IP层主要功能
        • IP数据报
        • 数据格式
        • 数据分片
      • 协议
        • 点到点协议(PPP)
        • 链路控制协议(LCP)
        • 认证协议(PAP和CHAP)
        • 大端小端
        • ARP(Address Resolution Protocol)
        • RARP(Reverse Address Resolution Protocol)
        • ICMP
    • 网络接口层

计算机网络

应用层

http和https

http
	超文本传输协议
	默认端口号:80
https
	http+ssl(安全套接字),即带有安全套接字层的超文本传输协议
	默认端口号:443
https比http更安全,但是性能更低

端口号:用两个字节表示的整数,它的取值范围是0-65535.其中,0-1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。

Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。
二者之间存在如下不同:
端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443;
资源消耗:和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;
开销:Https通信需要证书,而证书一般需要向认证机构购买;  
Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。

http的请求过程
1.浏览器先向地址栏中的url发起请求,并获取响应
2.在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
3.浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应
4.从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改--这个过程叫做浏览器的渲染。

http常见请求头:
Host(主机号和端口号)
User-Agent(浏览器名称)
Cookie

http重要的响应头
Set-Cookie(对方服务器设置cookie到用户浏览器的缓存)

响应状态码(status code)
200 成功
302 临时转移至新的url
307 临时转移至新的url
404 找不到该页面
500 服务器内部错误
503 服务不可用,一般是被反爬

对称加密、非对称加密和数字证书

对称加密:
对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;解释这里的密匙:(A,B,C,D)转换成(摸左耳朵,摸右耳朵,放左手,放右手)” 
一方通过密钥将信息加密后,把密文传给另一方,另一方通过这个相同的密钥将密文解密,转换成可以理解的明文。他们之间的关系如下:
明文 <-> 密钥 <-> 密文

非对称加密:
而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

非对称加密+对称加密:
HTTPS真正采用的是这种加密方式。
大致的过程就是使用非对称加密的方式传送密钥,那么该密钥就是双方就安全的得到了,也就是说使用非对称加密来使得双方安全拿到密钥。这个过程可以自己想象一下。
这样是不是很完美的解决了安全问题和效率问题?答案是否,因为这样同样存在安全问题,也就是上面提到的非对称加密通用存在安全问题。

中间人攻击:
在非对称加密的过程中,服务器向浏览器发送公钥的过程是明文的,这个通道上的公钥是可以被中间人获取到的,假设这个公钥被获取到了,然后中间人自己伪造一个公钥和私钥。将自己伪造的公钥传给浏览器,而浏览器用伪造的公钥加密后传回服务器的途中被中间人获取,然后用伪造的私钥解密,这样数据就被获取到了,而中间人同样有服务器的公钥,同时也可以和服务器进行交互。
上面暴露的问题是浏览器根本不知道公钥是不是服务器的,那么有没有什么办法来证明公钥是不是服务器的呢?答案是有

数字证书:
使用HTTPS的网站需要向CA机构申请一份数字证书来证明来保证该公钥是归谁所持有的。所以服务器和浏览器通信时可以下发给浏览器数字证书。浏览器可以从证书中获取到公钥。
但是同样存在问题,因为证书同样会被中间人获取到,同样可以伪造。那是不是有可以防止伪造数字证书的方法呢?答案是有的。

数字签名:
把证书内容生成一份签名,对比内容和签名是否一致来判断是否被篡改了消息。大概步骤:
CA机构拥有公钥和私钥
CA机构对证书明文哈希
对哈希后的值用私钥哈希得到数字签名。
这样将明文+数字签名组成一份数字证书颁发给网站。
那么怎么验证信息有没有被篡改呢

验证:
浏览器拿到证书后,得到了明文信息和数字签名信息。
浏览器使用CA的公钥匙解密拿到哈希的信息。
使用哈希算法对明文进行加密与解密得到的哈希信息进行比对,如果不等则说明被篡改了。
那么中间人是否能够篡改签名呢?(他不是CA机构信任的,所以没有服务器的私钥)

socket

https://www.jianshu.com/p/066d99da7cbd

socket是一个语言无关标准。任何可以实现网络编程的语言都有socket。
1.什么是socket
	网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
	建立网络通信连接至少要一个端口号。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是socket编程接口;http是轿车,提供了封装或者显示数据的具体形式;socket是发动机,提供了网络通信的能力。
	用于描述ip地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开了一个socket,并绑定到一个端口上,不同的端口对应于不同的服务。

2.socket连接步骤
	(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
	(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务端套接字提出连接请求。
	(3)连接确认:是指服务器端套接字监听到连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。
	如果包含数据交互+断开连接,就是五个步骤。

3.java中的socket
	在java.net包是网络编程的基础类库,其中ServerSocket和Socket是网络编程的基础类型。ServerSocket是服务端应用类型,Socket是建立连接类型。
	

###cookie、session和token

一、鉴权

鉴权是指验证用户是否拥有访问系统的权利

二、为什么会有cookie、session和token

1.http是无状态协议

就是说这一次请求和上一次请求是没有任何关系的,无法共享信息。好处是速度快。

2.cookie、session的加入

因为http请求是无状态的,所以要解决共享信息的问题必须使用其他手段,于是有了会话标识(session),当然session是基于cookie实现的。服务器为每个用户生成一个不一样的随机字符串,每次向服务器发起http请求,把这个字符串传给服务器,就能区分用户。

接口鉴权session解决方案:完成登陆之后,获取带有session信息的cookie,再次请求时加入。

3.session缺点

虽然session解决了共享信息的问题,但同时对于服务器带来了其他问题---资源开销。对于客户端来说session是非常好的,只需要cookie中存一个字符串就行了,但是服务器必须存储所有在线用户的session,那么是一笔很大开销。这时可以选择去扩展服务器做集群,但同时也出现分布式session问题,那么可以采用session粘滞或者session集中式管理(redis)来解决。

4.摆脱session,拥抱token

session原理:
1.客户端发送已登陆信息(用户id,密码),服务器向用户发放session id,记录认证状态
2.服务端向客户端发送session id的cookie
3.客户端向服务端发送session id的cookie,服务端通过验证session id来判定对方是真实用户
按照一定规则生成加密字符串,服务器只验证补存储,只要验证通过说明是自己生成的,用户信息存储在加密字符串中,这样性能,CORS(跨域资源共享)都能解决。这个加密字符串就是token。

接口鉴权token解决方案:完成登陆之后,获取token字符串,再次请求时加入。

三、区别

cookie:客户端和服务端都能创建cookie,存放在客户端。存放一些不敏感的数据,数据类型只能是字符串(json)
session:服务端生成session,存放在服务端。可以存放任何数据,java中session中可以存放任意对象。session必须依赖cookie实现

session:服务器生成、存储、验证,以cookie的方式传给客户端,客户端以同样的方式发送给服务端。session有状态
token:服务器生成、验证,以cookie或者请求头的方式传给客户端,客户端以同样的方式发送给服务端。token无状态

四、cookie:
在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。

五、session:
session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。

六、cookie和session结合使用:
web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:

1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。

2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式。

传输层

端到端
对等实体间的通信象拥有一条直接线路,而不管中间要经过多少通信节点。

概念

传输层的作用

承上启下, “加强”和“弥补”通信子网服务。

  1. 无连接的传输服务
    • 无连接的传输服务比较简单,发送数据之前不需 要事先建立连接。
  2. 面向连接的传输服务
    • 面向连接的传输服务要求两个用户(或进程)相互通信之前,必须先建立连接。
    • 一次完整的数据传输包括建立连接、传输数据、释放连接三个阶段。
5类协议
  • 0级:简单连接。只建立一个简单的端到端的传输连接,并可分段传输长报文。
  • 1级:基本差错恢复级。在网络连接断开、网络连接失败或收到一个未被认可的传输连接数据单元等基本差错时,具有恢复功能。
  • 2级:多路复用。允许多条传输共享同一网络连接,并具有相应的流量控制功能。
  • 3级:差错恢复和多路复用。是1级和2级协议的综合。
  • 4级:差错检测、恢复和多路复用。在3级协议的基础上增加了差错检测功能。
传输层寻址与端口
  1. 不能把进程作为通信的最终目的地
    • 进程是动态的
    • 进程可能改换
    • 发送方通常不知道与哪个进程打交道
  2. 端口
    • 传输层通过传输地址来实现该功能,这里的传输地址是指传输层服务访问点TSAP(称为端口),它是传输层与应用层之间交换信息的抽象接口。
    • 端口就是传输层服务访问点TSAP。
    • 应用层不同进程的报文通过不同的端口向下递交到传输层,由传输层复用并传递给网络层。
    • 当这些报文到达目的主机后,目的主机传输层使用分离功能,通过不同的端口把这些报文分别递交给相应的应用进程。
    • 因此,端口是用来标识不同应用层进程的
  3. 端口号
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-75hYTH5L-1596520566271)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/端口号1.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XONgJQ2q-1596520566276)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/端口号2.png)]

协议

UDP

特点

  • UDP是一个无连接的不可靠的传输层协议
  • 它在IP之上仅提供两个附加服务:多路复用和对数据的错误检查
  • UDP承载在IP数据报中传递
  • UDP无流量和拥塞控制
  • UDP报文只有8个字节的首部开销。
  • 网络出现的拥塞不会使源主机的发送速率降低。
TCP
解决问题
  1. 可靠性: ①防丢失:确认与重传; ②防重复:报文段序号;
  2. 传输效率、流量控制:滑动窗口机制;
  3. 拥塞控制:加速递减与慢启动技术;
  4. 建立连接:三次握手协议;
  5. 关闭连接:改进的三次握手协议。
TCP协议的功能
  • 寻址和复用
  • 创建、管理和终止连接
  • 处理并打包数据
  • 传输数据
  • 提供可靠性和传输质量的保证
  • 提供流量控制和拥塞控制
提供可靠性
  1. 防丢失 – 带重传的肯定确认技术
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S3Rx0udb-1596520566278)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/TCP可靠性1.png)]
  2. 防重复 – 可捎带的累计确认技术
    • 为每一分组赋予序号。
    • 确认时也指明确认哪个分组。
    • 序号同时保证了分组间的正确顺序。
  3. RTT与重传定时器
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ij91vVTk-1596520566279)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/TCP可靠性2.png)]
传输效率和流量控制-滑动窗口机制
  1. 一般的滑动窗口机制
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-idy9me8e-1596520566280)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/滑动窗口机制1.png)]
  2. TCP的滑动窗口技术
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mcczbPMa-1596520566281)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/滑动窗口机制2.png)]
  3. TCP端到端流量控制 - 窗口大小可变技术
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZR0i1eNJ-1596520566284)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/滑动窗口机制3.png)]
  4. 死锁问题
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kD5oRhc2-1596520566286)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/滑动窗口机制4.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4vO0vYK-1596520566288)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/滑动窗口机制5.png)]
TCP拥塞控制技术
  • 拥塞:交换节点(如路由器)数据报负载过重的现象
  • 控制拥塞首先是检测,然后是处理
  • 网络或互联网会产生拥塞,是因为路由器和交换机有队列(队列是在处理分组前或后存放分组的缓存),通常有输入队列和输出队列。如果分组的到达速率大于分组的处理速率,输入队列就会变得越来越长。反之,输出队列则越来越长

回顾
IP层的拥塞控制技术:(ICMP源站抑制报文),是一种被动机制。
TCP拥塞控制的必要性:在TCP层,拥塞造成时延增加,这又会造成超时重传,控制不当会进一步加重拥塞。TCP采用了一种主动控制机制。

1. 拥塞控制技术

  • 拥塞窗口cwnd
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aQG8bcXs-1596520566289)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制1.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D2VOtfWR-1596520566290)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制2.png)]

  • 慢启动技术
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cPKBOvEA-1596520566291)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制3.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bYECkanv-1596520566291)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制4.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5SgMQD1o-1596520566295)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制5.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tx4F29mm-1596520566296)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制6.png)]

  • 加速递减技术
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dS96asfK-1596520566299)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制7.png)]

  • TCP拥塞策略

    • 慢启动算法增加拥塞窗口大小到某些点上可能达到了互联网的容量,于是中间路由器开始丢弃分组。这就通知发送方它的拥塞窗口开得太大。
    • 拥塞避免算法是一种处理丢失分组的方法。
    • 有两种分组丢失的指示:发生超时和接收到重复的确认
  • 快速重传与快速恢复算法
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tRr9irOq-1596520566300)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制8.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VBuQWi4E-1596520566302)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制9.png)]

2. IP层对改善TCP性能的支持
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ruml3q88-1596520566302)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制10.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qXXoXVqk-1596520566303)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/拥塞机制11.png)]

TCP连接的建立与关闭
  1. 建立连接
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FYmOkpta-1596520566304)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/TCP连接1.png)]

  2. TCP连接释放机制
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pnu0wqeF-1596520566305)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/TCP连接2.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NQtJYQRo-1596520566306)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/TCP连接3.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JRj2iLSP-1596520566307)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/TCP连接4.png)]

IP层

点到点
对等实体间的通信由一段一段的直接相连机器间的通信组成。

概念

TCP/IP层次概念

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1NNcaX0c-1596520566308)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/TCPIP层次概念.png)]

IP层主要功能
  1. 无连接数据报的投递(数据结构,静态特性)
  2. 数据报寻径(选路,操作特性)
  3. 差错与报文控制(管理特性)
IP数据报

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m7mqOxeJ-1596520566309)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/IP数据报.png)]

数据格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mjh5h5W5-1596520566309)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/数据格式.png)]

数据分片

问题:每个网络有固定的MTU,若IP报文长度大于MTU,怎么办?
解决:重新设置首部的某些字段

  1. 修改分片标志和片偏移量字段
  2. 首部其它字段复制原来数据报首部的相应字段
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mgWlhBWO-1596520566310)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/数据分片1.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BgaQtN6T-1596520566311)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/数据分片2.png)]

协议

点到点协议(PPP)
  • 在建立PPP链路前,发起方必须通过电话网络呼叫回应方
  • 呼叫成功后双方建立了一条物理连接
  • 利用LCP创建PPP链路
  • 用PAP或CHAP验证客户身份
  • 用IPCP配置IP层参数(主要是配置IP地址)
  • 通信完成后,双方利用LCP断开PPP链路
  • 之后,断开物理连接
链路控制协议(LCP)

链路控制协议(Link Control Protocol,LCP)负责线路建立、配置、测试和选项协商,并在它们不再被需要时,稳妥地把它们释放。

认证协议(PAP和CHAP)

PAP:Password Authentication Protocol
发生时机:仅在建立连接的阶段发生

CHAP: Challenge-Handshake Authentication
Protocol

发生时机:建立连接时和连接建立之后的任何时间

大端小端

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D22CES5w-1596520566313)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/大端小端.jpg)]

ARP(Address Resolution Protocol)

为什么要进行地址转换?
必须根据IP地址找到物理地址才能进行实际的数据传送。

如何进行地址转换?
直接映射 or 动态绑定

两种地址类型:

  1. 空间较小且容易配置的物理地址(直接映射)
  2. 空间巨大且固定的物理地址(动态绑定)
    • 直接映射:IP地址<->物理地址
    • 动态绑定:用协议获得

基本步骤

  • 源端A广播包含目标B的IP地址IPb的ARP请求报文,请B回答自己的物理地址PAb;
  • 网络上的主机将IPb与自身的IP地址比较,若相同,则转步骤三,否则忽略;
  • B将PAb封装在ARP应答报文中,之后发送给A;
  • A从应答报文中提取IPb和PAb,从而获得IPb和PAb之间的映射关系。

提高ARP的效率

  • 设置ARP cache,存放最近解析出来的IP/MAC对。
  • 请求解析时,把自己的IP/MAC地址也放在报文中。
  • 收到ARP请求的所有主机都缓存其中的IP/MAC。
  • 主机入网时,主动广播它的IP/MAC。

不同网络间地址转换:路由器转发
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RGPolp7b-1596520566315)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/路由器转发.jpg)]

转换步骤

  • A利用ARP获得路由器R接口1的物理地址
  • A把报文发给路由器R的接口1
  • R从接口2使用ARP获得B的物理地址
  • R把报文从接口2转发给B
RARP(Reverse Address Resolution Protocol)
  1. 无盘工作站所在网络必须有RARP服务器

  2. 若有多台RARP服务器,可采用主、备份服务器技术

    ① 一主服务器,其余为备份服务器。

    ② 主服务器先响应,备份服务器有两种响应方式:
    a.只有在收到重复的RARP请求时才响应
    a.只有在收到重复的RARP请求时才响应
    b.随机延迟一段时间后再响应

ICMP

为什么需要ICMP?
数据报在传送中可能会遇到各种异常;IP层也需要控制功能(拥塞、差错控制)。

ICMP的作用
传递网络控制信息、提供差错报告。

ICMP报文类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-optw3g36-1596520566316)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/ICMP报文类型.png)]

ICMP差错报告的特点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p2Hh1osb-1596520566319)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/ICMP差错报告的特点.png)]

ICMP拥塞控制与源站抑制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fxVT0o7U-1596520566320)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/ICMP拥塞控制与源站抑制1.png)]

ICMP路径控制和重定向报文
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zqWuuD0f-1596520566321)(/Users/cwq/Documents/全栈工程师的笔记/图片文件/ICMP拥塞控制与源站抑制2.png)]

网络接口层

你可能感兴趣的:(计算机网络)