HTTP的介绍和提交方式区别

HTTP协议的介绍

HTTP协议是一种格式,并且这个协议是在应用层上面运行的,而应用层上面发送的协议是http协议。HTTP协议是基于TCP协议,而TCP协议是基于IP协议的。
HTTP协议发送一个请求分为两个部分:
第一个是请求(Request)
请求头:的结构分为请求方式、路径和协议版本
在运用层是按照这种格式描述好请求的。但是基本上是交给操作系统的。操作系统通过网络往外发送的,但是返送前必须套上一层TCP协议。
TCP/IP协议要进行访问别人的电脑的时候需要知道对方的IP、自己的IP和对方的端口,对方端口:区分一台电脑上的不同程序都是粗腰网络的程序。
第二个是响应(Response)

我们在浏览器的地址栏输入一个网址然后回车,回车这一瞬间到看到网页这一过程到底发生了什么?下面图片就给出了:
在这里插入图片描述

1、域名和DNS解析过程

就比如说你在浏览器的地址栏上面输入一个www.baidu.com,那么这个狭隘的解释他就是一个域名IP,而网络的访问的时候他只认IP地址,不认域名。就比如说一个IP地址为220.181.38.148百度电脑的公网IP地址就会将其解析为www.baidu.com。这个就是讲个IP地址给他取了一个别名,取别名的好处就是便于记忆和推广而取的别名也就是IP地址对应的域名,IP地址和域名是一一对应的。
访问百度:
前提是要去问档前网络中的路由器,如果找到了映射关系,那么就返回这个IP地址,然后再次发起访问,如果没有找到就会到上一层路由中查询,以此类推直到找到为止。如果在城市级别也没有找到,那么自己的DNS服务器就会让DNS解析,DNS向上级查找。百度一共有十三台中的DNS服务器。
注意:城市级别DNS并不能存储全世界的IP地址

2、发起TCP,进行了3次握手

我们首先是要拿到域名对应的IP地址之后,User-Agent(一般是指浏览器)会以一个随机端口,随机端口的范围是在1024到65535.向服务器的WEB程序的80端口发起TCP的连接请求。这个连接请求到达服务器端后,在这中间通过个这种路由设备,局域网内除外。进入到网卡,然后是进入到除内核的TCP/IP协议栈,还有可能要经过防火墙的过滤,最终到达WEB程序,最终建立了TCP/IP的连接。
下面就是TCP的3次握手的过程图:
在这里插入图片描述

为什么HTTP协议要基于TCP来实现?

目前在Internet中所有的权属都是通过TCP/IP进行的,HTTP协议作为TCP/IP模型中应用层的协议也不例外,TCP是一个端到端的可靠的的面向连接的协议,所以HTTP基于传输层TCP协议不用担心数据的传输的各种问题。

3.建立TCP连接后发起HTTP请求

经过了TCP的3次握手之后,浏览器发起了HTTP的请求。HTTP请求报文格式(HTTP请求报文有3部分组成(请求行+请求头+请求体))
在这里插入图片描述
请求行:
①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。
③是协议名称及版本号。

请求头:
④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
与缓存相关的规则信息,均包含在header中

请求体:
⑤是报文体,它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html?param1=value1&param2=value2”的方式传递请求参数。

什么是URL、URI、URN?
URI :统一资源标识符
URL:统一资源定位符
URN:统一资源名称
URL和URN 都属于 URI

提交方式区别

网上的常见提交 方式分为get和post两种,而我要说的区别就是这两种提交方式。
1、是基于什么前提?如果说什么前提都没有,不使用任何规范,自考虑语法和理论上的HTTP协议。
GET和POST几乎没有什么区别,名字不一样而已
2、如果是基于RFC规范
RFC:审核各种协议规范的组织,审核通过以后,会对其进行规范,以及推广
1)、在理论上的区别:GET POST具有相同的语法,但是有不同的语义
get --> 获取数据
post --> 发送数据
2)、实际上的区别:
各种浏览器,就是这个规范的实现者。
常见的不同:
2.1、GET数据在在URL可见,POST数据在不显示在URL中
2.2、GET对长度是有限制,POST长度不限制
2.3、GET请求的数据可以收藏为书签,POST请求的数据不可以收藏为书签
2.4、GET请求后,按回退按钮、刷新按钮无影响,post数据会被重新提交
2.5、GET编码类型:application/x-www-form-url
POST编码类型很多
常见发送文件的类型:
encodeapplication/x-www-form-urlencoded
multiple/form-data 复合数据
2.6、GET历史参数会被保存到浏览器里,post不会保存在浏览器中的
2.7、GET只允许ASCII;POST没有编码限制,允许发送二进制的。
2.8、GET与POST相比,GET安全性较差,因为所发的数据是URL的一分部分
2.9、GET产生的URL地址可以被Bookmark,而POST不可以。
2.10、GET请求会被浏览器主动cache,而POST不会,除非手动设置。
2.11、GET请求只能进行url编码,而POST支持多种编码方式。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值