IP地址
IP地址是设备在互联网上唯一的标识。
内网IP
路由以内的网络,可以连接互联网,内网中的设备可以互相访问,但是互联网不能直接连接内网,需要端口映射。
公网IP
互联网IP,可以和其他互联网IP互联,共享资源。
不同系统查看IP地址
OS | 指令 |
---|---|
macos | ifconfig |
linux | ifconfig |
windows | ipconfig |
↑ 命令行查询ip结果优先显示内网ip。也可以百度直接搜索ip,显示结果为公网ip。如果二者结果不同,说明该设备正在使用内网。
端口
端口是应用程序在计算机中唯一标识,可以被看作设备与外界通讯交流的出口。端口范围:0-65535
不同系统查看设备端口号
OS | 指令 |
---|---|
windows | netstat -ano |
linux | netstat -anltup |
macos | netstat -an -ptcp |
HTTP超文本传输协议
HTTP特点
- 基于tcp/ip协议
- 默认端口号80
- 浏览器向服务器request,服务器向浏览器response,请求和相应一一对应、每次请求相互独立,是无状态协议
原始报文分析
HTTP请求方式常见的有8种(不止8种),常用的是GET、POST。 GET请求的请求参数在URL中,URL的长度有限制,GET请求只能传输字符数据; POST请求的请求参数在请求体中,URL的长度无限制,POST请求可以传输字符数据和字节数据。
GET请求
GET /pages/search.html?wk=111 HTTP/1.1
HOST: www.hetianlab.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64)
AppleWebKit/537.36(KHTML, like Gecko) Chrome/89.0.4389.90
Safari/537.36
Accpet: text/html,application/xhtml+xml,application/xml
Referer: http://www.hetianlab.com/
Accept-Ecoding: gzip, deflate, br
Accept0-Language: zh-CN,zh;q=0.9,la;q=0.8,en;q=0.7
↓解析:
1.请求行:
GET(请求方式) /pages/search.html?wk=111(请求uri) HTTP/1.1(协议及其版本)
2.请求头:
HOST: www.hetianlab.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64)
AppleWebKit/537.36(KHTML, like Gecko) Chrome/89.0.4389.90
Safari/537.36
Accpet: text/html,application/xhtml+xml,application/xml
Referer: http://www.hetianlab.com/
Accept-Ecoding: gzip, deflate, br
Accept0-Language: zh-CN,zh;q=0.9,la;q=0.8,en;q=0.7
3.请求空行:
4.请求体:
POST请求
POST /pages/search.html HTTP/1.1
HOST: www.hetianlab.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64)
AppleWebKit/537.36(KHTML, like Gecko) Chrome/89.0.4389.90
Safari/537.36
Accpet: text/html,application/xhtml+xml,application/xml
Referer: http://www.hetianlab.com/
Accept-Ecoding: gzip, deflate, br
Accept0-Language: zh-CN,zh;q=0.9,la;q=0.8,en;q=0.7
Content-Type:application/x-www-form-urlencoded
wk=111
↓解析:
1.请求行:
POST(请求方式) /pages/search.html HTTP/1.1(请求uri)
2.请求头:
HOST: www.hetianlab.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64)
AppleWebKit/537.36(KHTML, like Gecko) Chrome/89.0.4389.90
Safari/537.36
Accpet: text/html,application/xhtml+xml,application/xml
Referer: http://www.hetianlab.com/
Accept-Ecoding: gzip, deflate, br
Accept0-Language: zh-CN,zh;q=0.9,la;q=0.8,en;q=0.7
Content-Type:application/x-www-form-urlencoded
3.请求空行:
4.请求体:
wk=111
GET请求报文和POST请求报文的区别有两点:
-
GET请求报文的参数在请求uri中,POST请求的参数在请求体中
-
POST请求报文的请求头多出一行Content-Type
请求头解析
HOST: www.hetianlab.com(请求主机的域名/ip地址)
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36(告诉服务器浏览器的版本信息,以供服务器解决浏览器兼容问题)
Accept: text/html,application/xhtml+xml,application/xml(传输文件类型)
Referer: https://www.hetianlab.com/(告诉服务器请求从哪里来,可以做统计,也可以用于验证来源,制作防盗链)
Cookie: ccf3a130053aa89a7bd8e882378f53bda22492436fba20(存储在用户本地终端上的数据,可用于身份验证的令牌)
响应消息
1.响应行:
HTTP/1.1(协议与版本)200(响应状态码)OK(状态码描述)
2.响应头:
Server: Tengine
Date: Tue, 30 Mar 2021 08:47:59 GMT
Content-Security-Policy: upgrade-insecure-requests;connect-src *
Vary: Accept-Encoding
ETag: W/*6045-1616753828000*
Last-Modified: Fri, 26 Mar 2021 10:17:08 GMT
Content-Encoding: gzip
3.响应空行:
4.响应体:
响应状态码
服务器告诉浏览器本次请求和响应的状态
- 1xx:服务器接收浏览器消息未完成,发送1xx状态码
- 2xx:成功,200
- 3xx: 重定向、跳转,302(访问控制),304(访问缓存)
- 4xx:客户端错误,404(没有找到对应资源),405(请求方法不被服务器允许)
- 5xx:服务器错误,500(服务器内部错误)