:通过进程间通信完成网络任务
自定制协议是程序员在应用层描述描述应用数据的协议,要保证一方在发送时可以构造数据(序列化),一方在接收时能够解析数据(反序列化)。
超文本传输协议(HyperText Transfer Protocol);
URL == 网址
http://user:pass@www.域名:8080/news/index.boardID=5&ID=2461?uid=1#name
1.协议部分:该URL的协议部分为“http:”,在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。不区大小写,在"HTTP"后面的“//”为分隔符。
2.user:pass: 登录信息(可选)
3.域名部分:。一个URL中,也可以使用IP地址作为域名使用.
4.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符,(可选)HTTP默认端口:80.HTTPS默认端口443.
5.虚拟文件路径:指定服务器上地文件的路径,定位特指资源。从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。(可选)
6.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。(可选)
7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
8.锚部分:标记出以获取资源中的子资源不会被传递到服务器端,锚一般用于页面。从“#”开始到最后,都是锚部分。(可选)
从发送端的应用层走网络协议栈到物理层,通过物理层传输到接收端,从接受端的网络协议栈传到应用层。
GET:请求读取由URL所标志的信息。
POST:给服务器添加信息
PUT:在标明的URL下存储一个文档
HEAD:请求读取由URL所标志的信息的首部。
DELETE: 删除指明URL所标志的资源,无验证机制。
OPTIONS: 询问服务端支持的方法。
TRACE:追踪路径,用于换回测试的请求报文。
CONNECT:要求用隧道协议连接代理。(用于代理服务器)
LINK:建立和资源间的联系。
UNLINE:断开连接。
常见的状态码:
200(ok),204(没有资源可以返回)
301(临时重定向),302(永久重定向)
400(请求有语法错误),403(Forbidden),404(NOT FOUND)
500(服务端内部错误),504(网关超时)
状态码 | 信息类别 | 原因 |
---|---|---|
1xx | 信息性状态码 | 收到的请求正在处理 |
2xx | 成功性态码 | 正常处理完毕 |
3xx | 重定向状态码 | 需要附加操作 |
4xx | 客户端状态码 | 服务器无法处理请求 |
5xx | 服务端状态码 | 服务器处理请求出错 |
Host: 指定请求服务器都域名和端口号。
Accept: 指定客户端能接受内容的类型。
Accept-Language: 浏览器可接受的语言。
Accept-Encoding: 声明浏览器支持的编码类型
Accept-Charset: 浏览器可接受的字符集。
Connection: 是否需要持久连接。
Conntent-Length: 请求正文长度。
Conntent-Type: 数据类型(text/html等)
Referer: 先前网页的地址
Cookie: 浏览器保存的一些信息,区分每个用户的身份,用于实现会话功能。
cache-Control:关于缓存的响应头。
Connect-Length:正文长度
Connect:-Type:正文类型
Location:重定向地址:3xx
Set-Cookie:设置http cookie。
Cookie:浏览器保存的客户端不敏感的信息,数据来源于服务器端,保存在浏览器,当下次再请求服务端某资源时携带。
Session:数据保存在服务端,一般描述当前会话信息。
请求
GET /s?ie=UTF-8&wd=bai HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Cookie:...
Host: www.baidu.com
Referer: https://www.baidu.com/
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
sec-ch-ua: "Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
响应
HTTP/1.1 200 OK
Bdpagetype: 3
Bdqid: 0xeb4f30e80002abb4
Cache-Control: private
Ckpacknum: 2
Ckrndstr: 80002abb4
Connection: keep-alive
Content-Encoding: br
Content-Security-Policy: frame-ancestors 'self' https://chat.baidu.com http://mirror-chat.baidu.com https://fj-chat.baidu.com https://hba-chat.baidu.com https://hbe-chat.baidu.com https://njjs-chat.baidu.com https://nj-chat.baidu.com https://hna-chat.baidu.com https://hnb-chat.baidu.com http://debug.baidu-int.com;
Content-Type: text/html;charset=utf-8
Date: Mon, 30 Oct 2023 11:46:17 GMT
Server: BWS/1.1
Set-Cookie: delPer=0; path=/; domain=.baidu.com
Set-Cookie: BD_CK_SAM=1;path=/
Set-Cookie: PSINO=6; domain=.baidu.com; path=/
Set-Cookie: BDSVRTM=24; path=/
Set-Cookie: H_PS_PSSID=39320_39396_39530_39420_39142_39439_39528_39497_39552_26350_39566_39427; path=/; domain=.baidu.com; Secure; SameSite=None
Strict-Transport-Security: max-age=172800
Traceid: 1698666377184948020216955824895063927732
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked