计算机网络八股文背诵版

临近秋招,整理了一下前段时间找实习时被问过的高频八股(多为互联网大厂)+一些自己的补充。这些只是最基础最基础必须全文背诵的八股!答案很简略,基本都是自己的理解,如有勘误还请指出,虚心改正。

一、OSI七层模型?

  1. 应用层:直接面向用户,为用户提供服务。主要协议:HTTP、FTP、SMTP、POP、Telnet

  2. 表示层:处理用户信息的表示问题。

  3. 会话层:组织协调两个会话进程之间的通信。

  4. 运输层:负责端到端通信。主要协议:TCP、UDP

  5. 网络层:通过路由选择,将分组选择适当的路径发往目的地。主要协议:IP、ARP、ICMP、IGMP

  6. 链路层:通过差错控制,使有差错的物理线路变为无差错的数据链路,提供可靠的通过物理介质传输数据的方法。分为MAC和LLC两层。

  7. 物理层:实现比特流传输。

二、HTTP报文段?(南瑞信通)

  • 请求报文:请求行(请求方法、URL、协议版本)、请求头、空行、实体体。

    常见头:Host、User-Agent、Connection、Accept-Charset、Accept-Encoding、Accept-Language

  • 响应报文:状态行(协议版本、状态码、状态码描述)、响应头、空行、实体体。

    常见头:Date、Server、Connection、Cache-Control、Content-Type、Content-Length、Content-Charset、Content-Encoding、Content-Language

请求方法中增删改查分别是:POST、DELETE、PUT、GET

三、POST和PUT区别?

  • PUT是向服务器端发送数据,修改数据的内容,但不会增加数据的种类(更新数据)

  • POST则会改变数据种类等资源,会创建新的内容(创建数据)

四、POST和GET区别?

  1. 应用场景:GET用于对服务器资源不会产生影响的场景(如请求一个网页的资源);POST相反(如注册)

  2. 是否缓存:浏览器一般会缓存GET请求,但很少缓存POST请求

  3. 传参方式:GET通过查询字符串传参,POST通过请求体传参

  4. 安全性:GET可将请求参数放入URL中向服务器发送,会被保留在历史记录中,不安全

  5. 请求长度:由于浏览器对URL长度限制,会影响GET发送数据的长度

  6. 参数类型:GET只允许ASCII字符,而POST连文件、图片都能传

五、HTTP连接方式?

长连接、短连接。

HTTP/1.0中默认使用短连接,浏览器和服务器没进行一次HTTP操作,就建立一次连接,任务结束就中断连接。

HTTP/1.1起默认使用长连接,请求头会有Connection: keep-alive

六、HTTP状态码?(美团)

1xx:服务器收到请求,需要请求者继续操作

2xx:成功

3xx:资源重定向(301:永久移动;302:临时移动)

4xx:客户端请求出错(404:请求资源不存在)

5xx:服务端出错(500:服务器内部错误)

七、HTTP和HTTPS的区别?

HTTP是明文传输。

HTTPS是HTTP+SSL加密。工作原理:

  1. 先建立连接,然后服务端发送证书给客户端;确认信任该证书后服务端再要求客户端发送证书并验证(双向身份验证)

  2. 加密过程:

    非对称加密:客户端发送第一随机数给服务端,服务端发回第二随机数+公钥,客户端用公钥加密得到预主密钥(第三随机数),发往服务端,两端通过第一随机数+第二随机数+预主密钥得到相同的会话秘钥

    接下来为对称加密(都用会话秘钥)

八、HTTP连接和socket连接的区别?

HTTP连接=以HTTP协议为通信协议的TCP连接

HTTP协议是应用层的,而socket是对TCP/IP协议的封装和应用,是一个API。

九、HTTP rest是什么?

定义:Web Service架构。通过语义化方式请求资源URL,解决URL膨胀问题(如GET会把各种操作附加到URL)。

作用:通过URL知道要什么资源,通过HTTP method知道要干什么,通过状态码知道结果如何。

优点:风格统一(不会出现乱七八糟的命名)、面向资源、充分利用HTTP本身语义

十、HTTP缓存类型及缓存寿命?

私有缓存(单独用户,常见的浏览器缓存)、共享缓存(多个用户,常用web代理)

缓存寿命计算依据依次为:cache-control>expires>last-modified

十一、HTTP为什么是无状态的?

无状态指的是不会记录客户状态信息,即每个“请求-响应”都独立。传统静态页面,前后请求不需要关联。

如何使HTTP有状态?cookie。

十二、cookie、session和token的区别?

  1. cookie是存储在浏览器端的用户数据(随HTTP请求发送给服务端)。

  2. session是存储在服务端的,而session id存储在cookie中。第一次创建session时,在cookie里记录session id,以后每次请求把cookie发送到服务器时,服务器看到这个id,就知道客户机来了。

  3. token代表一小段字符串,很多地方都有。

十三、IP地址的划分?

  1. A类:大型网络,0.0.0.0-127.255.255.255,掩码:255.0.0.0

  2. B类:中型网络,128.0.0.0-191.255.255.255,掩码:255.255.0.0

  3. C类:小型网络,192.0.0.0-223.255.255.255,掩码:255.255.255.0

※ A、B、C的网络号字段分别为1、2、3个字节长;在网络号字段最前有1、2、3位类别位(0、10、110)

  1. D类:广播地址(前4位:1110)

  2. E类:保留以后用(前4位:1111)

十四、TCP三次握手和四次挥手?(腾讯、美团、米哈游、招银网络)

TCP建立连接时需要三次握手。

  1. 第一次握手:客户端发送syn包到服务器,进入SYN_SENT状态,等待服务器确认。

  2. 第二次握手:服务器收到syn包,向客户端发送syn+ack包,进入SYN_RECV状态。

  3. 第三次握手:客户端收到syn+ack包,向服务器发送ack,此时两端进入ESTABLISHED状态。

TCP断连需要四次挥手。

  1. 第一次挥手:‌客户端想要关闭连接时,‌会发送一个FIN给服务器,‌请求关闭连接。‌此时,‌客户端进入FIN_WAIT_1状态,‌等待服务器的确认。‌

  2. 第二次挥手:‌服务器收到FIN后,‌发送一个ACK回应,‌表示收到关闭连接的请求。服务器进入CLOSE_WAIT状态。‌

  3. 第三次挥手:‌由于客户端想要关闭连接,服务器可能还有部分数据没有传输完成,所以还需要一段时间传输,等完成后,服务器会再向客户端发送一个FIN,‌表示数据全部传输完毕,可以关闭连接。‌

  4. 第四次挥手:‌客户端收到FIN后,发送一个ACK作为回应。服务器收到这个ACK后就完成关闭连接。‌而客户端会再等待2个MSL,以确保服务器收到了ACK包,‌并且不会出现新旧连接的数据混淆问题。‌

十五、TCP数据段包括哪些内容?(阿里云)

源端口、目的端口、序列号、确认号、ACK、SYN、FIN等、校验和、窗口大小、可选项(0~40字节)

十六、TCP如何拆包、组装包?UDP需要吗?

拆包、粘包原因:TCP面向字节流,字节流没有明确分界线,TCP底层并不了解数据具体含义,只会根据TCP缓冲区情况进行包划分,因此会出现拆包、粘包现象。

  1. 拆包:一个包过大,超过缓冲区大小,拆分发送。

  2. 粘包:两个包小,间隔时间短,合并成一个包。

  3. 拆包&粘包:Packet1过大,被拆包,而拆出去的部分又与Packet2粘包。

UDP面向消息,没有拆包粘包。因为UDP有消息保护边界(每个UDP包都有消息头,应用程序必须以消息为单位提取数据)

十七、访问一个网址的过程?

先由DHCP获得自己PC的IP地址;然后ARP获取网关路由器MAC地址;接着查询DNS获取域名对应的IP地址;得到IP地址后,建立TCP连接向服务端发送HTTP请求报文;最后服务端解析请求报文,发送HTTP响应报文给客户端。

注意在此过程中,传递报文的打包过程都是:

报文 --放入--> UDP/TCP报文段 --放入--> IP数据报 --放入--> 以太网帧

接收过程就是反过来。

十八、两台机器之间的通讯过程?

  • 在同一网段:PC1进行ARP广播,得到PC2的MAC地址。然后PC1封装数据->交换机->PC2

  • 不在同一网段:PC1进行ARP广播,得到网关的MAC地址。然后PC1封装数据->交换机->路由->交换机->PC2

十九、TCP和UDP的区别?(腾讯)

  1. TCP是面向连接的,UDP是无连接的。

  2. TCP提供可靠交付,UDP不保证可靠交付,没有拥塞控制。

  3. TCP面向字节流,UDP面向报文。

  4. TCP连接是全双工的可靠信道,只能是点对点;而UDP可以一对一、一对多、多对一、多对多。

  5. TCP首部开销20字节,UDP只有8字节。

二十、TCP可靠的原因?

  1. 确认和重传机制

  2. 数据排序

  3. 流量控制:发送方维护一个滑动窗口,接收方维护一个接收窗口

  4. 拥塞控制:慢启动、拥塞避免、快速重传、快速恢复

二十一、搜索敏感词,页面被重置的原理?

第二次握手时ACK改为0,使客户端误以为服务器重置了连接,主动放弃继续请求。

二十二、DNS解析过程?

先检查自身缓存是否有对应IP,如果有,结束。

递归查询:根服务器、顶级域服务器、权威服务器

二十三、什么是跨域?

URL:【http://】【www.baidu.com】【:8080】三个部分分别是协议、主机、端口号

当浏览器从一个域名的网页去请求另一个域名的资源,以上三者任一不同均为跨域。

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海苔小饼干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值