目录

一文读懂计算机网络协议

计算机网络体系架构

OSI架构(七层)、TCP/IP架构(4层,应用、运输、网际、网络接口)、五层体系架构

UDP(User Datagram Protocol)

用户数据报协议

UDP通过端口号把数据包分发给正确的程序

速度快,数据包容易丢失,视频

TCP(Transmission Control Protocol)

传输控制协议

数据包重传、排序机制,基于字节流

心跳包

连接阶段

三次握手

  1. 客户端-服务器(服务器可以收到请求) SYN(同步序列编号Synchronize Sequence Numbers)报文,客户端处于SYN_SEND状态,SYN=1, seq=x
  2. 服务器-客户端(客户端可以发送并收到请求) SYN=1, ACK(确认字符Acknowledge character)=x+1, seq=y
  3. 客户端-服务器(服务器可以发送请求) ACK=y+1, seq=x+1,可携带数据,客户端处于ESTABLISHED状态,服务器收到报告后也处于ESTABLISHED状态

数据传输阶段

发送端没有接收到接收端的确认数据包,触发重发机制

断开连接阶段

四次挥手

  1. 客户端-服务器 FIN=1, seq=u, 客户端处于FIN_WATI状态
  2. 服务器-客户端 ACK=1, seq=v, ack=u+1, 服务器处于CLOST_WAIT状态
  3. 服务器-客户端 过一阵子,FIN=1, ACK=1, seq=w, ack=u+1, 服务器处于LAST_ACK状态
  4. 客户端-服务器 ACK=1, seq=w+1, 客户端处于TIME_WAIT状态

过一阵子,客户端、服务器变为CLOSED状态

TCP和UDP的区别

  • TCP面向连接,UDP无连接
  • 交付可靠性
  • TCP面向字节流,UDP面向报文
  • TCP1对1,UDP1对1、1对多
  • TCP首部较大

一句话总结三次握手

在客户端和服务器之间建立正常的TCP网络连接时,客户端首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应

HTTP

请求-应答模式 HTTP应用层协议(内容的规范) TCP传输层协议(传输和连接方式的规范)

特点

  • 无状态
  • 明文传输
  • 队头阻塞

GET和POST

没有实质区别,报文格式不同

  • GET获取资源,POST提交/上传数据
  • GET请求长度在浏览器中有限制,POST没有

keep-alive

HTTP长连接重用一个TCP连接来发送/接收多个HTTP请求,来减少创建/关闭多个TCP连接的开销

Keep-Alive: timeout=5, max=100

表示这个TCP通道可以保持5秒,最多接收100次请求就断开

状态码

  • 1XX:中间状态,需要后续操作
  • 2XX:成功 200 OK 204 No Content 206 Partial Content
  • 3XX:重定向 301永久重定向 302临时重定向 304命中缓存
  • 4XX:请求报文有误 400 Bad Request 403 Forbidden 404 Not Found
  • 5XX:服务器错误 500 Interneal Server Error服务器报错 502 Bad Gateway访问出错 503 Service Unavailable服务器繁忙或者停机维护

HTTPS

加密传输、身份认证

对称加密(数据的可逆变换)+非对称加密(秘钥)的混合加密机制

第三方认证防公钥被掉包(客户端无法分辨传回公钥的到底是中间人还是服务器),服务器会将自身的证书和公钥传送给客户端,证书中包含网站信息(域名等)和数字签名(公钥生成)

SSL证书需要绑定IP,不能在同一个IP上绑定多个域名

Http2

  • 多路复用(帧-流-连接、并发发送、异步相应)
  • 头部压缩
  • 首部表(通用键值对只需发一次,省略重复的头信息)
  • 服务器推送(帮助客户端存入缓存)
  • 传输优先级
  • 重置数据的发送

IP

32位 = 网络号 + 主机号