计算机网络面试题整理-四年经验

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

I.网络架构

七层网络模型物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

II.三次握手

粗略的目的

  • 第一次客户端给服务器发送服务器能确认客户端的发送、服务器的接收能力。

  • 第二次服务器给客户端发送客户端能确认服务器的发送、客户端的接收能力。同时根据第一次握手能知道自己的发送、服务器的接收都正常。

为什么需要三次握手

  • 因为服务器不知道自己的发送客户端的接收是否正常所以需要第三次握手得到客户端的应答才能做最后的确认。

SYN和ACK

SYN 是 TCP/IP 建立连接时使用的握手信号。在客户机和服务器之间建立正常的 TCP 网络连接时客户机首先发出一个 SYN 消息服务器使用 SYN-ACK 应答表示接收到了这个消息最后客户机再以 ACK(Acknowledgement[汉译确认字符 ,在数据通信传输中接收站发给发送站的一种传输控制字符。它表示确认发来的数据已经接受无误。 ]消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接数据才可以在客户机和服务器之间传递。

位码

位码即tcp标志位有6种标示SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)

III.四次挥手

  • 客户端-发送一个 FIN用来关闭客户端到服务器的数据传送

  • 服务器-收到这个 FIN它发回一 个 ACK确认序号为收到的序号加1 。和 SYN 一样一个 FIN 将占用一个序号

  • 服务器-关闭与客户端的连接发送一个FIN给客户端

  • 客户端-发回 ACK 报文确认并将确认序号设置为收到序号加1

IV.各种协议

1.TCP,UDP 协议的区别

UDP 在传送数据之前不需要先建立连接远地主机在收到 UDP 报文后不需要给出任何确认。虽然 UDP 不提供可靠交付但在某些情况下 UDP 确是一种最有效的工作方式一般用于即时通信比如 QQ 语音、 QQ 视频 、直播等等。

TCP 提供面向连接的服务。在传送数据之前必须先建立连接数据传送结束后要释放连接。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的面向连接的传输服务TCP的可靠体现在TCP在传递数据之前会有三次握手来建立连接而且在数据传递时有确认、窗口、重传、拥塞控制机制在数据传完后还会断开连接用来节约系统资源这一难以避免增加了许多开销如确认流量控制计时器以及连接管理等。这不仅使协议数据单元的首部增大很多还要占用许多处理机资源。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。

2.TCP 协议如何保证可靠传输

简单来说数据会分包、TCP有检验和判断数据有缺失会直接丢掉而且不确认这次收到了、流量控制、拥塞处理、ARQ协议。

3.DNS

域名系统能够获取域名对应的ip地址。

V.http协议

1.当输入www.google.com时页面发生了哪些事情

  1. 域名解析检查顺序为浏览器自身DNS缓存—》OS自身的DNS缓存–》读取host文件–》本地域名服务器–》权限域名服务器–》根域名服务器。如果有且没有过期则结束本次域名解析。域名解析成功之后进行后续操作。

  2. 三次握手

  3. 建立连接发起http请求。

  4. 服务器响应浏览器得到内容。

  5. 浏览器解析html代码并且请求其中的资源

  6. 浏览器对页面渲染呈现给用户。

2.什么是Http协议无状态协议怎么解决Http协议无状态协议

http是无状态的也就是后续处理无法处理之前的信息。

处理办法有CookieSection会话保存甚至可以用数据库和缓存处理。

3.http协议组成

请求报文包含三部分

  • 请求行包含请求方法、URI、HTTP版本信息

  • 请求首部字段

  • 请求内容实体

响应报文包含三部分

  • 状态行包含HTTP版本、状态码、状态码的原因短语

  • 响应首部字段

  • 响应内容实体

空行

最后一个请求头之后是一个空行发送回车符和换行符通知服务器以下不再有请求头。

请求正文

请求数据不在GET方法中使用而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

返回值

在接收和解释请求消息后服务器返回一个HTTP响应消息。

HTTP响应也是由三个部分组成分别是状态行、消息报头、响应正文

请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成它们用空格分隔。例如GET /index.html HTTP/1.1。

GET方法在浏览器的地址栏中输入网址的方式访问网页时浏览器采用GET方法向服务器获取资源

POST方法要求被请求服务器接受附在请求后面的数据常用于提交表单。

个人不推荐用GET全部用POST比较方便。

请求头部

请求头部由关键字/值对组成每行一对关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息典型的请求头有

  • User-Agent产生请求的浏览器类型。

  • Accept客户端可识别的内容类型列表。

  • Host请求的主机名允许多个域名同处一个IP地址即虚拟主机。

4.状态码

  • 1xx指示信息–表示请求已接收继续处理

  • 2xx成功–表示请求已被成功接收、理解、接受

  • 3xx重定向–要完成请求必须进行更进一步的操作

  • 4xx客户端错误–请求有语法错误或请求无法实现

  • 5xx服务器端错误–服务器未能实现合法的请求

5.http的版本 1.0与1.1

在http1.0中当建立连接后客户端发送一个请求服务器端返回一个信息后就关闭连接当浏览器下次请求的时候又要建立连接显然这种不断建立连接的方式会造成很多问题。

在http1.1中引入了持续连接的概念通过这种连接浏览器可以建立一个连接之后发送请求并得到返回信息然后继续发送请求再次等到返回信息也就是说客户端可以连续发送多个请求而不用等待每一个响应的到来。

6.GET和POST的区别

GET重点是请求数据POST的重点是提交数据。GET传输数据以URL的方式POST通过http的post机制把数据封装在了请求实体中所以是不可见的安全性也更高一点。

GET只支持ASCII字符有可能出现乱码POST不会。

VI.https和http

HTTPS协议 = HTTP协议 + SSL/TLS协议在HTTPS数据传输的过程中需要用SSL/TLS对数据进行加密和解密需要用HTTP对加密后的数据进行传输由此可以看出HTTPS是由HTTP和SSL/TLS一起合作完成的。

传输的过程

服务器端的公钥和私钥用来进行非对称加密。

客户端生成的随机密钥用来进行对称加密。

Https先用非对称加密去加密对称加密的密钥后面的传输都用对称加密算法因为可以提升性能。

传输步骤

一个HTTPS请求实际上包含了两次HTTP传输可以细分为8步。

  • 1.客户端向服务器发起HTTPS请求连接到服务器的443端口

  • 2.服务器端有一个密钥对即公钥和私钥是用来进行非对称加密使用的服务器端保存着私钥不能将其泄露公钥可以发送给任何人。

  • 3.服务器将自己的公钥发送给客户端。

  • 4.客户端收到服务器端的证书之后会对证书进行检查验证其合法性如果发现发现证书有问题那么HTTPS传输就无法继续。严格的说这里应该是验证服务器发送的数字证书的合法性。如果公钥合格那么客户端会生成一个随机值这个随机值就是用于进行对称加密的密钥我们将该密钥称之为client key即客户端密钥这样在概念上和服务器端的密钥容易进行区分。然后用服务器的公钥对客户端密钥进行非对称加密这样客户端密钥就变成密文了至此HTTPS中的第一次HTTP请求结束。

  • 5.客户端会发起HTTPS中的第二个HTTP请求将加密之后的客户端密钥发送给服务器。

  • 6.服务器接收到客户端发来的密文之后会用自己的私钥对其进行非对称解密解密之后的明文就是客户端密钥然后用客户端密钥对数据进行对称加密这样数据就变成了密文。

  • 7.然后服务器将加密后的密文发送给客户端。

  • 8.客户端收到服务器发送来的密文用客户端密钥对其进行对称解密得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束整个HTTPS传输完成。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6