1、TCP三次握手四次挥手

进行三次握手的主要作用:为了确认双方的接收能力和发送能力是否正常,指定初始化序列号是为了后面的后面的可靠传输做准备

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

https://segmentfault.com/a/1190000022944999

通过下面几种机制共同保证可靠传输

(1)数据块划分

应用数据被划分为TCP认为合适发送的数据块

(2)数据排序

TCP会对每个数据进行编号,接收端对收到的数据进行排序,将有序的数据传给应用层

(3)校验和

发送端和接收端分别计算数据的数据的校验和,如果数据有差错就丢弃

(4)数据包去重

丢弃重复接收的数据

(5)超时重传

当TCP发出一个段后,会启动一个定时器,等待接收方会送确认报文,如果不能及时收到一个确认就重传

(6)流量控制

连接双方都有固定大小的缓冲区,接收端只允许发送端发送接收段缓冲区大小的数据,当接收方来不及处理发送方发送的确认数据时候,会提示发送方降低发送速率。TCP使用滑动窗口协议实现流量控制

(7)拥塞避免

  • 慢开始
  • 拥塞避免
  • 快重传和快恢复

(8)ARQ协议

发送完一个分组就停止等待确认报文,收到确认报文后在发送下一个分组数据

3、从输入URL到页面加载发生了什么?

https://segmentfault.com/a/1190000006879700

4、TCP与UDP的区别

https://zhuanlan.zhihu.com/p/24860273

  • 基于连接与无连接
  • 对系统资源的要求
  • UDP程序结构相对来说简单
  • 流模式与数据报模式
  • TCP可靠传输,UDP不可靠

5、计算机网络协议

(1)什么是计算机网络协议

网络协议是计算机在通信过程中要遵循的一些约定好的规则

(2)为什么对网络协议分层?

  • 易于实现和维护,因为层与层之间是独立的,互不影响
  • 有利于标准化的制定

(3)各层的协议与作用

  • 应用层

    通过应用进程之间的交互来完成特定的网络作用,常见的协议有:HTTP、DNS等

  • 表示层

    数据的表示、安全、压缩,确保一个系统的应用层发送的数据能被另一个系统的应用层数据读取

  • 会话层

    建立通信链路保持会话过程中链路的通畅

  • 传输层

    负责向两台主机的进程之间通信提供数据传输的服务,常见的协议有:TCP、UDP等

  • 网络层

    选择合适的网间路由与交换节点,确保数据及时送达

  • 链路层

    在物理层提供比特流传输服务的基础上,建立相邻节点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上的无差错传输,常见的协议:PPP、SDLC

  • 物理层

    实现相邻计算机结点之间比特流的透明传输

6、Session、Cookie和Token的主要区别

https://blog.csdn.net/whl190412/article/details/90024671

HTTP协议是无状态的,即服务器无法判断用户身份

(1)Cookie

Cookie是保存在客户端一个小数据块,其中包含了用户信息。当客户端向服务端发起请求,服务端会像客户端浏览器发送一个Cookie,客户端会把Cookie存起来,当下次客户端再次请求服务端时,会携带上这个Cookie,服务端会通过这个Cookie来确定身份

(2)Session

Session是通过Cookie实现的,和Cookie不同的是,Session是存在服务端的。当客户端浏览器第一次访问服务器时,服务器会为浏览器创建一个sessionid,将sessionid放到Cookie中,存在客户端浏览器

(3)Token

客户端在浏览器第一次访问服务端时,服务端生成的一串字符串作为Token发给客户端浏览器,下次浏览器在访问服务端时携带token即可无需验证用户名和密码,省下来大量的资源开销

7、谈谈HTTP1.0、HTTP1.1和HTTP2.0

(1)HTTP协议的定义

HTTP协议(HyperTextTransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议

(2)HTTP的基本优化

  • 带宽

  • 延迟

    浏览器阻塞(HOL blocking)

    DNS 查询(DNS Lookup)

    建立连接(Initial connection)

(3)HTTP1.0 -> HTTP1.1

  • 缓存处理

  • 带宽优化及网络连接的使用

  • 错误通知的管理

  • Host头处理

  • 长连接

    一个TCP连接上可以传送多个HTTP请求和响应

(4)HTTP 2.0 -> HTTP1.1

  • 多路复用

    单连接多资源的方式

  • 首部压缩

    静态字典、动态字典

  • 支持服务器推送

    允许服务端去完全充分地利用一个可能空闲的网络,改善页面加载时间