计算机网络

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的核心功能
相关推荐
.豆鲨包12 小时前
【计算机网络】数据链路层
网络·网络协议·计算机网络
zl_dfq15 小时前
计算机网络 之 【TCP协议】(确认应答、超时重传、流量控制、三次握手、四次挥手、滑动窗口、快重传、延迟应答、Nagle算法、捎带应答、拥塞控制)
网络·计算机网络·tcp
一个有温度的技术博主16 小时前
计算机网络基础三:从定义到分类,构建你的知识框架
计算机网络
zl_dfq16 小时前
计算机网络 之 【TCP协议】(面向字节流、TCP异常情况、保活机制、文件与Socket的关系、网络协议栈的本质)
网络·计算机网络·tcp
zl_dfq18 小时前
计算机网络 之 【TCP协议】(TCP的核心定位与控制本质、TCP报文结构)
网络·计算机网络·tcp
AnalogElectronic2 天前
考研408计算机学科专业基础综合——计算机网络复习
计算机网络·考研
y = xⁿ2 天前
(小林coding) 计算机网络学习笔记:什么是HTTP?
笔记·学习·计算机网络
头疼的程序员2 天前
计算机网络:自顶向下方法(第七版)第八章 学习分享(一)
网络·学习·计算机网络
watersink2 天前
第14章 计算机网络
计算机网络
千千寰宇2 天前
[网络协议/文件] `SMB` 协议:一种Windows主流的局域网网络文件共享协议
计算机网络·操作系统-磁盘管理/文件系统