今天是参加笔记活动的的第2天
HTTP协议示例
链路层-本地帧头部
链路层-IP协议头部
运输层-TCP协议头部
应用层-HTTP协议头部
TCP协议格式
小节
- 网络组成部分:由主机,路由器,交换机等组成
- 网络结构:网络的网络
- 信息交换方式:电路交换和分组交换
- 网络分层:分清职责,物理层,链路层,网络层,运输层和应用层
- 网络协议:标头和载荷
web中的网络
HTTP协议
HTTP连接模型
对头阻塞(head of line blocking)
HTTP1.1:无法多路复用
//main.js
console.log('hello world');
/*style.css*/
body{
color:red;
}
body{
console.log('hello world');
color:red;
}
HTTP2:帧
request=style.css,content='body'{'
request=main.js,content='console.log('hello world')'
request=style.css,content=' color:red;'
request=style.css,content='}
前三个字节载荷长度
第四个字节类型
第五个字节类型对应的flags
第六到第九字节
- 第一位:保留位
- 第2-32位:流id
随后的8192字节载荷
HTTP2:帧带来的额外好处
- 调整响应传输的优先级
- 头部压缩
- server push
HTTP2:对头阻塞,但是在TCP上
- TCP包0:包含了(包含了style.css的第一行内容)的HTTP2的帧
- TCP包1:包含了(包含了main.js的全部内容)的HTTP2的帧
- TCP包2:包含了(包含了style.css的第二行内容)的HTTP2的帧
- TCP包3:包含了(包含了style.css的第三行内容)的HTTP2的帧
HTTP2:3 RTT启动
- HTTP客户端:我要和大哥说话
- TCP客户端默默对HTTP客户端说,我知道你很急,但你先别急
- TCP客户端:嗨!服务端,你在吗?
- TCP服务端:嗨!客户端,我在,你在吗?
- TLS客户端:hello,能给我吧钥匙吗?
- TLS服务端:hello,给,你的钥匙
- HTTP客户端:终于到我了,我要index.html!
HTTP3:QUIC
- quick UDP Internet Connection
- 现存网络设备对TCP和UDP支持已经僵化
- UDP不靠谱但是QUIC靠谱
- QUIC可以为除HTTP协议以外的应用层协议提供支持