前端 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地址

结构图

posted @ 2022-02-23 22:43  波吉国王  阅读(68)  评论(0编辑  收藏  举报