http协议详解有哪些?计算机通信协议基础教程

TheDisguiser 2020-04-22 20:36:05 java常见问答 3692

小伙伴们都知道计算机通讯协议吧,在两台计算机中如果想要互相传输数据必须遵守计算机通讯协议,否则无法传输数据,下面我们就来了解一下传统的http协议,一起了解一下吧。

·URL:

统一资源定位符。

示例:

https://ke.qq.com/course/315793?tuin=15945f87

通常来说,一个URL一般会由以下几个部分构成:域名、路径、协议、URL参数及端口。

·协议:

protocol,一般来说是URL中的第一部分(分号之前的部分)

协议指:

通信双方对于数据的格式、含义、规程等所做的约定。

以下是常见的几种通信协议:

http

https(http+ssl)

ssh

ftp

smtp

pop3

oracle

mysql

sql server

about

config

javascript

·域名:

domain/hostname。是指协议之后的部分,通常来说可以是服务器的虚拟域名,机器名,IP地址。

比如说:

www.baidu.com

192.168.2.212

localhost

127.0.0.1

xiaozhifei(机器名)

·端口:

port端口是跟在域名之后,格式为:

域名:端口

端口是由服务器来配置的,是用来监听客户端的请求的。

通常来说,如果服务器所使用的端口与其所采用的通信协议是默认的匹配关系的话,则客户端在请求时,是可以不用填写端口。

常见协议与其默认端口的对应关系如下:

http--80

ssl--443or8443

ssh-22

ftp-21

smtp-25

pop3-110

oracle:1521

mysql:3306

sql server:1433

·路径:

path,一般来说,表示要访问的资源在服务器的容器中所存储的位置。

示例:

/course/315793

·URL地址参数:

通常是以问号作为连接符,拼接在URL的path部分的最后。

本身的数据组织格式为键值对应格式:

key1=value1&key2=value2&...&keyN=valueN

PS:从广义的角度来说,URL地址参数本身也属于URL PATH的一部分。

·HTTP协议:

超文本传输协议。该协议分为两个部分:http request(请求部分),http response(响应部分).

·http request的构成:

一般来说,http请求是由三个部分构成:request line、request header、request body。

·request line:

请求行,通常来说就是请求数据包的第一行内容,包含以下信息:request method、request path、protocol/version

示例:GET /phpwind/ HTTP/1.1

·request method:

请求方法,常见的http的请求方法有get、post、put、patch、options、delete、trace、header等。

请求方法是由接口(开发)决定的。

PS:在工具or浏览器中,不指定方法的情况下,采用的就是get。

get和post的区别:

·在协议层面,都是请求方法,都可以用来传递参数给服务器。

·在web(浏览器)中,使用get方法传递的参数会变成URL地址参数。使用post方法,则是在request body中。

·在浏览器中,URL地址的长度是有限制。

通常核心的,比较长的数据都会采用post方法进行传递。

·在浏览器中,通过get方法获取的数据会在本地缓存(cache),post方法获取的数据是不会在本地缓存的。

·request path:

即URL的path和URL地址参数部分。

·protocol/version:

协议和版本,要求请求和响应所使用的协议保持一致。

·request headers:

请求头,是指从第二行开始,到第一个空行结束的部分。

请求头一般表示客户端和服务器进行通信时所需要的一些控制和交互信息。

请求头是键值对应的,格式为: key:value

http协议规定了很多标准的请求头,代表特殊的通信含义和作用。

·User-Agent:

用来告知服务器,客户端的一些配置信息(硬件、系统层面),绝大多数情况下,服务器都是通过该信息头来识别用户来源。通常cookie的自动管理是和这个信息头有关的。

·Content-Type:

该信息头是用来告知服务器,所发送的请求主体(body)的数据组织格式。

常见的有:

application/x-www-form-urlencoded 一般是键值对的数据。key=value&key=value

一般来说,不指定Content-Type的情况下,默认就是application/x-www-form-urlencoded。

application/json 数据就是就json 格式

application/xml 数据就是就xml格式

multipart/form-data; boundary=xxx

混合表单格式,通常是用来实现上传或者包含上传操作的业务。可以实现多种数据格式混合传递的效果。

boundary是分隔符,比实际的分隔符要少两个下划线。

·Cookie:也是请求头的一部分。

·request body:

请求主体,是指请求包的第一个空行之后的所有内容。

请求主体的内容,数据组织格式等都和业务有关。

·http response:

http响应通常也是由三个部分构成:response line 、response header、response body。

·response line:

响应行,通常来说就是响应数据包的第一行内容,包含以下信息: protocol/version、response code、response message

示例:HTTP/1.1 200 OK

·response code:

响应代码,又叫状态码。是服务器用来告知客户端,服务器对于请求的处理状态的。一般来说,状态码是三位长度的数字构成,然后首位数字表示大的分类。

1xx:表示传输控制信息。

2xx:典型的就是200,表示服务器对于请求的处理是成功的。

PS:成功仅仅表示通信逻辑上的成功,并不代表业务的成功。

3xx:表示重定向操作

PS:通常来说,1xx、2xx、3xx都表示请求成功。

4xx:表示客户端错误。

5xx:表示服务器错误。

PS:通常来说,我们去做接口测试的时候,尤其是脚本开发和调试阶段,如果出现了4xx和5xx错误,基本上都是因为我们所封装的数据、方法有误导致。

·response message:

是接在响应代码之后的,是用来描述响应代码所表示的含义的。

·response header:

响应头,是指从响应包的第二行开始,到第一个空行截至的部分,通常包含服务器反馈给客户端的控制、交互信息。

格式、含义等都和请求头类似。

·response body:

响应主体。

·掌握http request,可以帮助我们去实现请求包的封装。

掌握http response,可以帮助我们去自动化的判断请求是否成功,或者实现数据的关联。

以上就是本文的所有内容,想知道更多Java入门相关知识的话,请一直一直关注我们吧。