Http/Https详解和TCP
复杂网络环境
host主机 A—数据丢包—数据重复—数据完整性校验—数字转换模拟信息–。。。。—信号衰减—host主机 B
网络分层
网络通信在不同方面是有层次结构的,每一层仅于他上一层或者下一层进行交互,只要层与层之间接口不变就不会影响其他层
**OSI七层模型:**应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
TCP/IP 5层模型:应用层、传输层、网络层、数据链路层、物理层
传输层协议:TCP、UDP、SCTP
网络层协议:ipv4、v6,ARP、ICMP
数据链路层协议:以太网、无线LAN
HTTP协议
Http协议使用的是SOCK_STREAM类型套接字进行传输的,毕竟浏览器要解析网页,数据就不能出现错误的地方
深入理解Socket套接字原理_Princesk的博客-CSDN博客
http1.0使用短连接方式访问。
http1.1开始默认使用长连接,响应头会加上Connection:keep-alive这句表示使用长连接,但对于服务器来说这本身是不现实的,所以服务器端有一些自定义连接策略来防止客户端长时间连接导致的服务端资源占用。
对于HTTP协议,因为使用时TCP协议建立连接的所以HTTP的长短连接实际就是TCP的长短连接。
无状态以请求和应答方式运行的协议,使用可扩展语义和自描述消息格式
**无状态:**指不存储用户信息
**可扩展语义:**使用头部字段定义所需要信息
**自描述消息格式:**数据可以是文本图片音频等
1、http报文格式
http报文格式=起始行+头部字段集合+空行+消息正文
**起始行:**描述请求或响应的基本信息,GET /inedex.html HTTP/1.1或者HTTP/1.1 200 ok,header.
**头部字段集合:**使用键值对形式详细说明报文,connection:keep-alive
**消息正文:**实际传输数据可以是任何满足条件数据,
网页数据
1.1、请求报文格式
格式=method+空格+url+空格+version+换行符
请求方法method:
get/post/head/put/delete
请求目标URL:
URL标记请求资源位置
版本号version:
http协议版本(1.0之后有,1.1后标准化)
1.2、响应报文格式
格式=version+空格+statusCode+空格+reason+换行符
版本号version
表示http协议版本
状态码StatusCode
一个三位数,用代码表示服务器处理结果
-
1**,服务器收到请求,需要请求者继续执行操作
100继续,101服务器根据客户端请求切换请求的协议如请求切换http1.1
-
2**,成功,操作被成功接收并处理
200 200ok请求get和post常见 204 无内容,服务器处理成功但是没有返回内容,浏览器会先确保当前显示