计算机网络

网络分层

网络中数据的传输,不是简简单单的发送,需要一系列的封装/拆分操作,才能进行传输,所以使用分层的思想进行一步步操作。

 

1、说说OSI 七层、TCP/IP 四层的关系和区别?

 

 

 

  1. 应用层:相当于程序,软件开发就属于应用层。协议:HTTP,FTP,SMTP,POP3。           数据格式:报文
  2. 表示层:用于处理两个通信系统中交换信息的"表示方式" (数据格式变换,数据的加密解密,数据的压缩和解压)
  3. 会话层:两个通信系统建立连接(建立同步),然后有序的传输数据。 比如看电影,就先建立了一个连接,然后慢慢传递数据  
  4. 传输层:负责主机中两个进程的通信,即通过端口号进行连接。            数据格式:报文段
  5. 网络层:将数据传输到目标地址,主要进行ip寻址 (逻辑寻址)路由的选择。          数据格式:"数据报/分组"  (数据报分为好多组)
  6. 数据链路层:为了让物理层进行无差错的传输,主要进行mac寻址 (物理寻址),差错控制               数据格式:"帧"   
  7.  物理层:将数据转换为信号,进行传输。                                   数据格式:"比特"   

 补充:

  • 数据链路层的差错控制:
    • 位错:就比如0变成1,1变成0                   解决办法:检错编码(奇偶检验码,海明码等)
    • 帧错:帧的丢失,重复,失序等           解决办法:停等协议;滑动窗口协议(下面讲)
  • 物理层的信号转换:

 

  • 物理层的传输介质:
    • 有线传输(导向型传输):双绞线,同轴电缆,光纤
    • 无线传输(非导向型传输):无线电波,微波,红外线,激光

 敲黑板:TCP/IP 四层是 OSI 七层的简化版,已经成为实事国际标准。接下来就是各层中的重要协议

 

TCP/IP

1.说说TCP,UDP的区别

2,TCP如何保证可靠传输

  • 序列号:TCP是面向字节流的,将每一个字节进行编号

  

  • 校验和:通过一定算法,比较发送方和接收方的校验和是否一样。
  • 确认应答:每次发送方接收到数据,都会返回一个ACK报文。
  • 超时重传:发送方有一个定时器,到时间没有收到确认的ack,就会重新发送。
  • 连接管理:三次握手,四次挥手。
  • 流量控制:控制一个发送方发送消息给接受方的流量。采用滑动窗口,调整滑动窗口的大小。
  • 拥塞控制:是一个全局的概念,控制多个发送方发送消息给接收方的拥塞。

3.三次握手,四次挥手

先来看一下tcp报文段的格式

 

 

 三次握手:

 

 

 四次挥手:

补充:

  • 状态的变化:
  • 为什么要等待2MSL? 

 

 

 3.1、为什么 TCP 链接需要三次握手,两次不可以么,为什么?

  • 两次握手,只能保证单向连接是畅通的。客户端发送,服务端回应,客户端知道可以联系上服务端,但是服务端不知道能不能联系上客户端。只有三次握手,服务端也收到客户端的回应,才算双向连通。

  • 如果第一回第一次握手半天没回复,发了第二回第一次握手,并且连接成功后,数据传完了。这时候刚才第一回第一次握手回复了第一回的二次握手。如果是二次握手,那么就又联系上了,但是如果三次握手,客户端对于第一回的第二次握手就置之不理,就联系不上了。就是正常现象。

3.2为什么要传回 SYN?

  • 接收端传回发送端所发送的 SYN 是为了告诉发送端,我接收到的信息确实就是你所发送的信号了
 3.3、为什么要四次挥手
  •  任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。这时只是关闭了自己的通话,只有当对方也表示结束通话时,才真正的进入全关闭状态
  • 举个例子:A 和 B 打电话,通话即将结束后,A 说“我没啥要说的了”,B回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,这样通话才算结束。

 4、停等协议和滑动窗口协议

 我们知道,为了保证可靠性以及流量控制,我们采用了停等协议和滑动窗口协议。

  • 停等协议(AQR):停止等待协议,发送完一个报文段"等待回信",超时重发。缺点:信道利用率太低。
  • 后退N帧协议(GBN):利用滑动窗口,发送方每次可以连着发窗口内所有的字节,因为窗口内有一定的编号,接收方采用"累积确认"的方式返回一个ack,滑动窗口就可以向后移动一位。                                  并且下一个确认的字节必须为指定的报文段,必须按照顺序确认。                                    缺点:批量重发
  • 选择重传协议(SR):利用滑动窗口。每一个报文段都需要确认;只重传错误的报文段;接收方一般和发送方的窗口一样大。在窗口内的所有报文段,谁先来谁就能先确认,但是只有                                  窗口内前面的所有报文段都确认,才能向后移动。

5你知道 TCP 如何处理拥塞吗?

需要经历四个阶段

  • 慢启动
  • 拥塞避免
  • 快重传
  • 快恢复

 注意:拥塞窗口就相当于发送窗口。

 6、说说 TCP 协议如何提高传输效率?
  • 滑动窗口
  • 快重传:发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待为其设置的重传计时器到期。
  • 延迟应答(累积应答):每次都应答太浪费性能,我们就可以设置传送了n个报文段后,就应答一次。

  • 捎带应答:很多情况下,客户端服务器在应用层也是一发一收的。这时候常常采用捎带应答的方式来提高效率,而ACK响应常常伴随着数据报文共同传输。如:三次握手。

7IP的分类

 Ip的特点:由4段组成,每一段是0-255。分为网络号主机号 

  • A类:(1.0.0.0-126.0.0.0)一般用于大型网络。
  • B类:(128.0.0.0-191.255.0.0)一般用于中等规模网络。
  • C类:(192.0.0.0-223.255.255.0)一般用于小型网络。
  • D类:是多播地址,地址的网络号取值于224~239之间,一般用于多路广播用户。
  • E类:是保留地址。地址的网络号取值于240~255之间。

补充:

子网掩码:因为有的ip地址是二级,有的是三级。所以没法确认哪部分是网络号和主机号,就需要按照子网掩码来计算。主要为了划分子网后,先找到子网,再找到主机。

 

 

 

HTTP

http协议本质是使用TCP协议,http本身是无连接的

 1、讲一下 http1.1 和 http2 有什么区别?

HTTP1.1

  • 持久连接
  • 请求管道化
  • 增加缓存处理(新的字段如cache-control)
  • 增加 Host 字段、支持断点传输等

HTTP2.0

  • 二进制分帧
  • 多路复用(或连接共享)
  • 头部压缩
  • 服务器推送

2、说说 HTTP 和HTTPS 的区别?

  1. 端口 :HTTP:端口80。HTTPS:端口443。
  2. 安全性和资源消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS 运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS高,但是 HTTPS 比HTTP耗费更多服务器资源。
3、你知道对称加密和非对称加密的区别和原理吗?
  • 对称密钥加密:加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;

  • 非对称加密:使用一对非对称密钥,即公钥私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。由于非对称加密的方式不需要发送用来解密的私钥所以可以保证安全性但是和对称加密比起来,它比较,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

4HTTP报文格式以及常见的状态码

 

 

5、HTTP长连接,短连接

  • 在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
  • 而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:
  Connection:keep-alive
  • 在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
  • HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

6、Get与POST的区别

(1)GET 一般用来从服务器上获取资源,POST 一般用来创建资源;

(2)GET 是幂等的,即读取同一个资源,总是得到相同的数据,而 POST 不是幂等的。GET 不会改变服务器上的资源,而 POST 会对服务器资源进行改变;

(3)从请求参数形式上看,GET 请求的数据会附在URL之后;而 POST 请求会把提交的数据则放置在是HTTP请求报文的请求体中。

(4)POST 的安全性要比 GET 的安全性高,因为 GET 请求提交的数据将明文出现在 URL 上,而 POST 请求参数则被包装到请求体中,相对更安全。

(5)GET 请求的长度受限于浏览器或服务器对URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制的。

 

其他协议

1ARP协议

  • 完成ip地址到mac地址的映射:因为数据链路层需要mac地址传递帧
  • 检查ARP高速缓存,有对应表则写入MAC帧。没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP分组同一局域网中的所有主机都能收到该请求,目的主机就会向源主机单播一个ARP响应分组,源主机收到之后就将该映射写入ARP缓存中。
  • 如果局域网中也没有需要的mac地址,就会把请求发送到网关,后面就由网关进行查找。

本局域网找到

 

 通过外网访问:就需要经过一系列网关进行转发。数据只需要发给网关就不用管了,网关自己找到对应主机。

        这个过程中,开始ip和结束ip不变(逻辑地址不变),mac地址改变(物理地址改变)。

 2、DNS的寻址过程你知道吗?
  •  两个高速缓存区,一个是host里,一个在本地域名服务器里。高速缓存区没有才进行一步一步查询
  • host缓存区->本地域名服务器->根域名服务器

 

  •  两种查询方式:递归查询,迭代查询

 2、DNS的寻址过程你知道吗?
  1. DNS解析
  2. TCP连接
  3. 发送HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染页面
  6. 连接结束

 

posted @ 2021-11-17 23:21  小猴子_X  阅读(354)  评论(0编辑  收藏  举报