前端 HTTP TCP IP
一句话: HTTP应用层 get, url, 请求头 TCP传输层 端口 IP网络层 ip地址
HTTP(超文本传输协议)应用层
请求报文结构:
请求行: get/post/put url 版本
请求头: 格式为“属性名:属性值”,服务端据此获取客户端的信息
请求正文:
实例
//请求首行
GET /hello/index.jsp HTTP/1.1
//请求头信息,因为GET请求没有正文
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98
//空行
//因为GET没有正文,所以下面为空
响应报文结构:
状态行: HTTP/1.1 200 OK
响应头: 格式为“属性名:属性值” , 客户端据此获取服务端的信息
响应正文:
实例
//状态行
HTTP/1.1 200 OK
//响应头:
X-Powered-By: Express
transfer-encoding: chunked
vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
content-type: application/json
date: Mon, 31 Jan 2022 04:21:30 GMT
connection: close
//空行
//响应正文
{"code":200,"message":"成功","data":null,"ok":true}
http1.0的主要特点:
无连接:无连接的含义是限制每次连接只处理一个请求。
它限制每次连接只处理一个请求,当服务器返回本次请求的应答 后便立即关闭连接,下次请求再重新建立连接。(当今多数服务器支持Keep-Alive功能,使用服务器支持长连接,解决无连接的问题)
http1.1的特点
默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,可以发送多次HTTP请求 。
connection: close/keep-alive
TCP (传输控制协议,ransmission Control Protoco) 传输层
端口号 序列号seq 确认号ack
三次握手: 保证传输可靠, 确实是实时的请求
客 seq a
服 seq b ack a+1
客 seq a+1 ack b+1
传输数据
客 seq x
服 seq y ack x+1
客 seq x+1 ack y+1
服 seq y+1 ack x+2
或
客 seq x
客 seq x+1
客 seq x+2
客 seq x+3
客 seq x+4
服 seq y ack x+5
客 seq x+5 ack y+1
客 seq x+6 ack y+1
客 seq x+7 ack y+1
客 seq x+8 ack y+1
客 seq x+9 ack y+1
服 seq y+1 ack x+10
四次挥手
客 FIN seq c
服 seq d ack c+1
//服 seq d+1 *N次
服 FIN seq d+N ack c+1
客 seq c+1 ack d+2
IP (Internet Protocol 网络协议) 网络层
源ip地址, 目的ip地址