Http协议

wuchangjian2021-11-05 00:57:51编程学习

一.什么是http协议

1.1 介绍
HTTP是Hyper Text Transfer Protocol(超文本传输协议),是万维网服务器传输超文本到本地浏览器的协议。是应用层的一种协议,是面向连接,无状态的。基于TCP协议由request请求和response响应组成的,默认端口是80。由于http协议是无状态的,所以两次请求响应之间是没有关联的。

1.2 request
浏览器通过socket套接字向服务器提交请求,常见请求有GET,POST,PUT,DELETE。请求分为请求头和请求体。
在这里插入图片描述

1.3 response
Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。

二.HTTP通信

1.1 URL解析

URL包含了查找某个资源的信息,基本格式如下:HTTP://host:port/abs_path,其中HTTP表示桶盖HTTP协议来定位网络资源;host表示合法的主机域名或IP地址,port指定一个端口号,缺省80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。
例如:输入www.baidu.com;浏览器会自动转换成:HTTP://www.baidu.com/

1.2 数据传输

我们的电脑:
ip:192.168.163.26
子网掩码:255.255.255.0
网关地址:192.168.31.2
DNS地址:8.8.8.8

(1)拿到HTTP://www.baidu.com/后,会去找DNS服务器解析域名,返回一个ip地址,如173.168.26.101。拿到ip会判断两个ip是否是同一子网的,会用子网掩码255.255.255.0分别对两个ip做与运算。很明显,两个ip不是同一子网。

(2)应用层走http协议。这时候会发送一个数据包给路由网关(192.168.31.2),拿到网关ip地址的mac地址。把http请求报文:GET http://173.168.26.101/test HTTP/1.1,上图数据打包到数据包中。

(3)传输层走tcp协议。tcp会随机选取一个发送方的端口,接收方的端口一般是80端口。把应用层数据包封装到tcp包后会加一个tcp头,tcp头就有端口号信息。

(4)网络层走ip协议。把tcp头和tcp数据放到ip数据包中,然后设置一个ip头。ip头有本机和目标机器的IP地址。这里本机IP地址是192.168.163.26,目标IP地址173.168.26.101。由于两个ip不是同一子网,就会通过以太网协议广播到网关中去,通过网关发送出去。

(5)数据链路层走以太网协议。把ip头和ip数据包封装到以太网数据包中,然后加一个以太网头。以太网头有本机网卡mac地址和网关mac地址。如果就是说,数据包超出以太网包1500字节,就需要切包。切包后每个包的ip头会多出一个包序列号。
在这里插入图片描述
以太网数据包会通过交换机发送到你的网关192.168.31.2上,通过网关可以发送到其他网关,经过n个网关后发送到173.168.26.101百度服务器。

(6)百度服务器会层层解包,获取到http报文,发送给Tomcat。Tomcat会返回响应,和上面一样的。

在这里插入图片描述

相关文章

《程序设计基础2021》题目集5 题解二

目录 7-1 求π的近似值 (15 分) 7-2 特立独行的幸福 (25 分) 7...

Redis搭建主从复制和哨兵模式

主从复制结构 目录 一、搭建环境  二、设置主从复制,配置192...

被骗6百万爱看美女照,深圳“四方形”法务主任:没抵挡住美色

被骗6百万爱看美女照,深圳“四方形”法务主任:没抵挡住美色

2022-08-07 11:27:46 “总感觉哪里不对劲,好像我自己...

湖南“制造湘军”名片实力“出圈”

湖南“制造湘军”名片实力“出圈”

2022-08-09 17:02:46 8月9日,湖南省委宣传部召开打...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。