计算机网络

TCPS三次握手和四次挥手

在建立TCP连接时,需要通过三次握手来建立

  1. 客户端向服务端发送一个SYN,并携带一个随机生成的初始序列号seq=x,此时客户端处于同步已发送状态
  2. 服务端接收到SYN后,向客户端发送一个SYN_ACK,确定号是客户端的序列号+1(ack=x+1),同时自己也生成一个初始序列号seq=y,此时服务端处于同步收到模式
  3. 客户端接收到SYN_ACK,再向服务端发送一个ACK,确定号是服务端的序列号+1(ack=y+1),此时客户端进入已建立状态,等到服务端收到ACK后,也进入已建立模式,连接正式建立
    为什么需要三次握手?
  • 为了阻止历史的重复连接,减少通信双方不必要的资源消耗
  • 帮助双方同步初始序列号

在断开TCP连接时,需要通过四次挥手来断开

  1. 客户端向服务端发送FIN,并停止发送数据,进入FIN_WAIT_1状态
  2. 服务端接收到FIN后,向客户端发送ACK,表示我收到断开连接的请求,客户端不发数据,不过服务端这边可能还有数据要处理。此时客户端进入FIN_WAIT_2 ,服务端进入CLOSE_WAIT状态
  3. 服务端处理完所有数据后,向客户端发送FIN,表示服务端现在可以断开连接,此时服务端进入LAST_ACK状态
  4. 客户端收到服务端的FIN,向服务端发送ACK,此时客户端进入TIME_WAIT,等待2MSL时间后才会真正连接才会真正关闭 。服务端一收到ACK,就立马关闭连接

浏览器发送一个请求到收到响应经历了哪些步骤

  1. 浏览器解析用户输入的URL,生成一个HTTP格式的请求
  2. 先根据URL域名从本地hosts文件查找是否有映射IP,如果没有就将域名发送发送给电脑所配置的DNS进行域名解析,得到IP地址
  3. 浏览器通过操作系统将请求通过四层网络协议发送出去
  4. 途中可能会经过各种路由器,交换器,最终到达服务器
  5. 服务器收到请求后,根据请求所指定的端口,将请求传递给绑定了该端口的应用程序,比如8080端口被tomcat占用
  6. tomcat接收到请求数据后,按照http协议的格式进行解析,解析得到所要访问的servlet
  7. 然后servlet来处理这个请求,如果是MVC中的DispatcherServlet,那么则会找到响应中的Controller中的方法,并执行该方法得到结果
  8. Tomcat得到响应结果后封装成HTTP响应的格式,并再次通过网络发送给浏览器所在的服务器
  9. 浏览器所在的服务器拿到结果后再传递给浏览器,浏览器则负责解析并渲染

HTTP3中quic协议

HTTP

HTTP 1.0到1.1的核心升级:解决连接成本问题,使用长连接,同一个TCP连接可以复用

HTTP 1.1到2.0的升级

  • 多路复用,引入了流Stream的概念,把一个TCP连接拆成无数个逻辑上的流,每个请求打散成二进制帧,到了服务端再组装
  • 二进制分帧,以前都是纯文本,机器不好解析
  • 头部压缩,通过索引ID来避免重复的head
    HTTP 2.0到3.0
  • 底层的传输层由TCP变成了UDP,使用QUIC协议,它在UDP上实现了一套可靠传输机制
  • 虽然为流,但是丢一个数据包就会暂停所有等重传,而QUIC是独立的,只阻塞丢包的流,其他正常跑
  • 以前需要三次握手+TLS握手,而QUIC把两者合并了,如果以前连过,能做到见面即就是聊天
  • 基于TCP,靠四元组识别连接,你从WiFi切到4g就会断开连接,而QUIC不看IP,它给每个连接发送唯一的Connection ID,不管ip变不变,通信继续
    QUIC并没有依赖任何UDP的任何特性(除了端口和校验和),TCP是操作系统内核实现的,改造极难,而QUIC相当于是在应用层重新实现了一遍TCP的核心功能
相关推荐
ErizJ2 小时前
面试 | 计算机网络
计算机网络·面试·职场和发展
湛生2 小时前
pikachu通关笔记
笔记·计算机网络·安全·web安全·网络安全·bp
the sun343 小时前
计算机网络:物理层
计算机网络
周淳APP3 小时前
【计算机网络之XSS、CSRF、DDoS原理及防御措施】
前端·网络·计算机网络·http·ddos·xss·csrf
the sun3414 小时前
计算机网络绪论:socket套接字、fd、进程、端口号之间的联系
计算机网络
未来可期叶1 天前
【软考网工】第一章 计算机网络概论:高频考点(OSI/TCP/IP+数据封装)
网络·笔记·网络协议·tcp/ip·计算机网络·软考·备考
橙露2 天前
计算机网络核心:TCP三次握手与四次挥手图文详解(四千字深度分析)
网络·tcp/ip·计算机网络
Java狂魔哥2 天前
行测。。。。
计算机网络
橙汁味的风2 天前
1计算机网络引言
开发语言·计算机网络·php