协议:
协议,就是事先的一种约定、规则、规范、标准。
常见协议
常见协议
常见协议
HTTP、HTTPS 超文本传输协议
FTP 文件传输协议
SMTP 简单邮件传输协议
TCP协议
TCP/IP协议栈分为四层,每一层都由特定的协议与对方进行通信,而协议之间的通信最终都要转化为 0 和 1 的电信号,通过物理介质进行传输才能到达对方的电脑,因此物理介质是网络通信的基石。
三次握手示意图
第一次: 建立连接时,客户端发送SYN包(SYN=i)到服务器,并进入到SYN-SEND状态,等待服务器确认。
第二次: 服务器收到 SYN 包,必须确认客户的 SYN ( ack=i+1 ) , 同时自己也发送一个 SYN 包( SYN=k ) , 即 SYN+ACK 包,此时服务器进入 SYN-RECV 状态。
第三次: 客户端收到服务器的 SYN+ACK 包,向服务器发送确认报 ACK ( ack=k+1 ) , 此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手,客户端与服务器开始传送数据。
四次挥手示意图
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手: Server 收到 FIN 后,发送一个 ACK 给 Client ,确认序号为收到序号 +1 (与 SYN 相同,一个 FIN 占用一个序号), Server 进入 CLOSE_WAIT 状态。
第三次挥手: Server 发送一个 FIN ,用来关闭 Server 到 Client 的数据传送, Server 进入 LAST_ACK 状态。
第四次挥手: Client 收到 FIN 后, Client 进入 TIME_WAIT 状态,接着发送一个 ACK 给 Server ,确认序号为收到序号 +1 , Server 进入 CLOSED 状态,完成四次挥手。
HTTP协议
HTTP协议即超文本传输协议, 是一个 [浏览器端] 和 [服务器端] 请求和响应的标准
常用请求方法 GET, POST
请求 (request):请求行、请求头、请求主体。
响应 (response):状态行、响应头、响应主体。
HTTP的请求协议
HTTP请求由状态行、请求头、请求正文三部分组成:
状态行:包括请求方式Method、资源路径URL、协议版本Version;
请求头:包括一些访问的域名、用户代理、Cookie等信息;
请求正文:就是HTTP请求的数据。
GET请求实例
//--------------------------请求行--------------------------------
RequestURL:https://www.baidu.com/
RequestMethod:GET
StatusCode:200OK
RemoteAddress:61.135.169.125:443
ReferrerPolicy:no-referrer-when-downgrade
//--------------------------请求头--------------------------------
Host:www.study.com
// 是否需要持久链接
Connection:keep-alive
// 使用http1.1版本
Upgrade-Insecure-Requests:1
//代理请求的浏览器信息
User-Agent:Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.96Safari/537.36
// 指定客户端接受的数据类型
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,`*/*`;q=0.8
// 指定浏览器可接受的web服务器,返回内容压缩编码
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
//----------------------------请求体-------------------------------------
//get请求没有请求体,但是参数会拼接到请求行中
POST请求
//-----------------------请求行---------------------------------------------
RequestURL:https://passport.jd.com/uc/loginService?uuid=a35108dd-99ce-4970-907b-109452be479c&ReturnUrl=https%3A%2F%2Fwww.jd.com%2F2019&r=0.4442924509727251&version=2015
RequestMethod:POST
StatusCode:200OK
RemoteAddress:211.144.24.29:443
ReferrerPolicy:no-referrer-when-downgrade
//-----------------------请求头--------------------------------------------
Host:www.study.com
Connection:keep-alive
//传递的参数的长度。
Content-Length:29
Cache-Control:max-age=0
Origin:http://www.study.com
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.96Safari/537.36
//请求内容对应的mime类型.如表单数据,如果是post请求,必须指定这个属性。
Content-Type:application/x-www-form-urlencoded
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,`*/*`;q=0.8
Referer: http://www.study.com/day02/01-login.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
//------------------------请求体------------------------------------------
username=pp&password=123456
响应报文
//---------------------状态行(响应行)-------------------------------
//HTTP/1.1 HTTP版本
//200 响应的状态
//200表示成功
//304表示读缓存
//404表示找不到资源
//500表示服务端错误
HTTP/1.1 200 OK
//----------------------响应头-----------------------------------------------
Date: Thu, 22 Jun 2017 16:51:22 GMT
// 服务器信息
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
//
X-Powered-By: PHP/5.4.45
Content-Length: 18
// 保持长连接的事件
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
//内容类型,告诉浏览器该如何解析响应结果
Content-Type: text/html;charset=utf-8
//-----------------------响应体------------------------------------------------
hello world