1.复杂的网络
A host=>数据丢包=>数据重复=>数据完整性校验=>数字转换模拟信号=>…=>信号衰弱=>B host
osi网络参考模型
应用层协议 dns http ssh smtp ftp
传输层 Tcp UDP SCTP
网络层 ipv4 ipv6 ARP ICMP 网络层
数据链路层 以太网 无线 LAN
物理层 光纤 ,双绞线电缆,无线设备
一个http请求的分层解析流程
超文本传输协议
一种无状态,以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动
1.http报文格式
http协议的请求报文和响应报文的结构基本相同,由三大部分组成
-
起始头:描述请求或响应的基本信息
-
头部字段集合:使用key-value形式更详细地说明报文
-
消息正文:实际传输的数据,它不一定是纯文本,可以是图片,视频等二进制数据
2.请求行报文格式
-
请求方法:如get/head/put/post,表示对资源的操作
-
请求目标:通常是一个url,标记请求方法要操作的资源
-
版本号,表示报文使用的http协议版本
3.响应行报文格式 -
版本号:表示报文使用的http协议版本
-
状态码:一个三位数,用代码的形式表示处理的结构,比如200是成功,500是服务器错误;
-
原因:作为数字状态码补充,是更详细的解释文字,帮助人理解原因
4.http头字段
头字段注意事项 -
字段名不区分大小写,字段名里不允许出现空格,可以使用连字符”-“但不能使用下划线_(有的服务器不会带下划线的头字段)。字段名后面必须紧接着:,不能有空格,而""后的字段值前可以有多个空格
-
字段的顺序是没有任何意义的,可以任意排列不影响语义;
-
字段原则上不能重复,除非这个字段本身的语义允许,例如Set-Cookie
5.常用头字段
http协议中有非常多的头字段,但基本上可以分为四大类, -
请求字段:请求头中的头字段,如host,referer
-
响应字段:响应头中的头字段,如Server,Date
-
通用字段:在请求头和响应头里都可以出现,如Content-type,Connection;
http请求的完整工程
TCP协议
tcp:面向连接的,可靠的,基于字节流的传输层通信协议
特点:
- 基于连接的:数据传输之前需要建立连接
- 全双工:双向传输
- 字节流:不限制数据大小,打包成报文段,保证有序接收,重复报文自动丢弃,
- 流量缓冲,解决双方处理能力的不匹配
- 可靠的传输服务:保证可达,丢包时通过重发时通过重发机制实现可靠性
- 拥赛控制:防止网络出现恶性拥塞
TCP连接管理
1.tcp连接:四元组[源地址,源端口,目的地址,目的端口]
2.确认连接,tcp三次握手
- 同步通信双方初始序列号,
- 协商tcp通信参数
如何就行握手