???????计算机网络相关的问题面试过程中问的还是挺多的,比如TCP/IP,UDP各种网络协议,TCP连接三次握手,四次挥手…网络这块知识偏理论一些,问题答案会随着你了解的深入可以一直扩展,所以多了解一些理论知识,也是你编程路上的基石,让你更有底气和自信。了解深入的多了,说的多了,也就能拉开你和别人的差距从而脱颖而出,整理了一些计算机网络相关的知识点,希望可以给大家带来帮助,一起学习成长!
? ?
1.说说OSI 七层、TCP/IP 四层的关系和区别?
· OSI 七层从下往上依次是:
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
· TCP/IP 四层从下往上依次是:
物理层、网络层、传输层、应用层
特点:
层与层之间相互独立又相互依靠
上层依赖于下层,下层为上层提供服务
?
2.说说TCP 与 UDP 的区别?
1. UDP是无连接的,不管发送是否成功接收,TCP是面向连接的,是可靠传输,连接
成功后才能互相发送信息
2. UDP是不可靠传输,不使用流量控制和拥塞控制,TCP是可靠传输,使用流量控制
和拥塞控制
3. UDP支持一对一,一对多,多对一和多对多交互通信,TCP只能是一对一通信
4. UDP是面向报文传输,TCP是面向字节流传输
5. UDP适用场景为IP电话,视频会议,直播等,TCP适用于文件传输等
总结
TCP 向上层提供面向连接的可靠服务 ,UDP 向上层提供无连接不可靠服务。
UDP 没有 TCP 传输可靠,但是可以在实时性要求高的地方使用。
对数据准确性要求高,速度可以相对较慢的,可以选用TCP。
?
3.TCP 是如何实现数据的可靠性?
通过校验和、序列号、确认应答、超时重传、连接管理、流量控制、拥塞控制等机制
来保证可靠性。
确认应答:
TCP 传输过程中,每次接收方接收到数据后,都会对传输方进行确认应答,也就是
发送 ACK 报文,这个 ACK 报文中带有对应的确认序列号,告诉发送方,接收了
哪些数据,下一次数据从哪里传。
超时重传:
在进行 TCP 传输时,由于存在确认应答与序列号机制,也就是说发送方发送一部分
数据后,都会等待接收方发送的 ACK 报文,并解析 ACK 报文,判断数据是否传输
成功。如果发送方发送完数据后,迟迟都没有接收到接收方传来的 ACK 报文,那么
就对刚刚发送的数据进行重发。
流量控制:
如果发送方的发送速度太快,会导致接收方的接收缓冲区填充满了,这时候继续传输
数据,就会造成大量丢包,进而引起丢包重传等等一系列问题。TCP 支持根据接收
端的处理能力来决定发送端的发送速度,这就是流量控制机制。具体实现方式:接收
端将自己的接收缓冲区大小放入 TCP 首部的『窗口大小』字段中,通过 ACK 通知
发送端。
?
4.TCP 如何处理拥塞
网络拥塞现象是指到达通信网络中某一部分的分组数量过多,使得该部分网络来不及处
理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷
入停顿,即出现死锁现象。拥塞控制是处理网络拥塞现象的一种机制。
拥塞控制的四个阶段:
慢启动
拥塞避免
快速重传
快速恢复
?
5.三次握手的过程
1. 客户端给服务器端发送一个SYN报文
2. 服务器端接收到SYN报文后给客户端回ACK报文确认收到
3. 客户端接收到再次发送ACK报文,此时连接就建立了
?
6.四次挥手
1. 应用程序关闭连接,发送FIN报文
2. 接收方收到FIN报文,发送ACK报文,通知应用程序关闭,发送方收到ACK报文
3. 接收方应用程序关闭连接,发送FIN+ACK报文
4. 发送方收到FIN+ACK报文后,发送ACK确认报文,接收方收到ACK报文,连接关闭
?
7.TCP 链接需要三次握手,两次不可以么,为什么?
1. 两次握手只能保证单项连接是畅通的,比如一个人给你打招呼:吃饭了吗?你听到
了,并回复,吃过啦,你吃饭了吗?但是对方没收到,所以不能确定连接是否成功建立
?
8.说说 HTTP 和HTTPS 的区别?
1. HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用。
2. HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL
加密传输协议。
3. HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,
后者是443。
4. HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可
进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
?
9.常见的状态码有哪些?
1××:请求处理中,请求已被接受,正在处理
2××:请求成功,请求被成功处理 200 OK
3××:重定向,要完成请求必须进行进一步处理 301 : 永久性转移
302:暂时性转移 304 :已缓存
4××:客户端错误,请求不合法 400:Bad Request,请求有语法问题
403:拒绝请求 404:客户端所访问的页面不存在
5××:服务器端错误,服务器不能处理合法请求 500 :服务器内部错误
503 :服务不可用,稍等
?
10.http中常见的header字段有哪些?
cookie: 请求时传递给服务端的cookie信息
allow: 支持什么HTTP方法
expires: 设置资源缓存的失败日期
content-encoding: 编码格式
User-Agent: 创建请求的浏览器和用户代理名称
?
11.Get与POST的区别
1. GET 一般用来从服务器上获取资源,POST 一般用来创建资源
2. GET 是幂等的,即读取同一个资源,总是得到相同的数据,而 POST 不是幂等的
GET 不会改变服务器上的资源,而 POST 会对服务器资源进行改变
3. 从请求参数形式上看,GET 请求的数据会附在URL之后;而 POST 请求会把提交
的数据则放置在是HTTP请求报文的请求体中
4. GET 请求提交的数据将明文出现在URL 上,而 POST 请求参数则被包装到请求
体中
5. post请求发送的数据量比get请求更大
?
12.在浏览器中输入一个www.baidu.com后执行的全部过程
域名解析 -> 建立TCP连接(三次握手)-> 发起http请求 -> 服务器响应http请求
浏览器得到html代码 -> 浏览器解析html代码,并请求html代码中的资源(如 js、
css、图片等)-> 浏览器对页面进行渲染呈献给用户。
?
13.Session、Cookie 的区别
1. session 在服务器端,cookie 在客户端(浏览器)
2. session 的运行依赖 session id,而 session id 是存在 cookie 中的,
也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过
其它方式实现,比如在 url 中传递 session_id)
3. 用户验证这种场合一般会用 session
??
?? ?? ?? ?? 关注我,即刻原地起飞~~~
|