网络相关

159 阅读2分钟

一、TCP与UDP的区别,为什么可靠和不可靠

是否连接: UDP无连接,TCP是面向连接的

是否可靠: TCP可靠,使用流量控制和阻塞控制

传输方式: TCP面向字节流,UDP面向报文

连接对象数: TCP是一对一通信,UDP支持一对一、一对多、多对一

适应场景:数据准确性要求较高使用TCP,实时性要求较高使用UDP

二、TCP三次握手、四次挥手,

第一次握手: 客户端向服务端发送一个请求报文,进入send状态。

第二次握手: 服务端收到请求后发送确认。syn+ack

第三次握手: 客户端发送一个ack

两次握手不行么? 两次握手只能是服务端知道客户端要发送。不确定是否收到。

第一次挥手: 客户端打算关闭连接,会发 FIN 报文给服务端(其实就是把标志位 FIN 点亮),客户端发送完之后,就进入FIN_WAIT_1状态

第二次挥手: 服务端回复 ACK 报文给客户端

第三次挥手: 服务端再给客户端端发一个FIN报文

第四次挥手:客户端端收到FIN并且发送一个ACK确认报文,自己进入 TIME_WAIT 状态

四次挥手的最后一个 ack 的作用是什么,为什么要 time wait,为什么是 2msl

  1. 保证最后的 ACK 报文 「接收方」一定能收到(如果收不到,对方会 重发 FIN 报文)
  2. 确保在创建新连接时,先前网络中残余的数据都丢失了

三、一次 HTTP 请求的全过程,包括域名解析、定位主机等

四、当你用浏览器打开一个链接的时候,计算机做了哪些工作步骤

  1. www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址

  2. 根据这个IP,找到对应的服务器,发起TCP的三次握手

  3. 建立TCP连接后发起HTTP请求(为什么) TCP是一个端到端的可靠的面相连接的协议,HTTP基于传输层TCP协议不用担心数据传输的各种问题。理解get和post请求方法、请求头、请求体

  4. 服务器响应HTTP请求,浏览器得到html代码

  5. 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)(先得到html代码,才去找这些资源)

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

  7. 服务器关闭关闭TCP连接(四次挥手)