HTTP TCP UDP IP 协议 数据头格式
TCP/UDP IP HTTP报文格式
TCP (重点)
1、 端口到端口之间的映射 (2字节 0-65535)
2、 收发的应答:SEQ ACK(ACK一般为收到的SEQ+1)
3、 部首长度((0-15) 4字节 也即 *20-60字节)!!
4、 窗口大小 主要用于接收方ACK时告诉发送方自己的缓冲区的大小,避免溢出
https://blog.csdn.net/challenglistic/article/details/126448803
UDP
1、 端口到端口 2字节 0-65535
2、 部首固定8字节
常用端口表:
0-65535(2字节)
SSH | 22 |
---|---|
DNS | 53 |
HTTP | 80 |
MySQL | 3306 |
Redis | 6379 |
Apache Tomcat web server默认服务端口 | 8080 |
IP(IPv4)数据报格式
1、 IP到IP 2字节 0-42亿
2、部首 长度 (0-15)4 *20-60 字节 (和TCP一样)
HTTP 重点!
(注:SP代表空格,CR代表回车,LF代表换行)
请求行(request line)、请求头(header)、空行和请求数据(request data)
所以重点在请求行于请求头上:
1、 请求行
- 1.1 请求方法: GET POST PUT DELETE
- GET和PUT的区别
- GET:请求请求参数于对应的值放在url?后面长度受限(1024),不安全,没有数据部分(?参数1=值1&参数2)
- PUT:请求参数放在数据里面
- GET和PUT的区别
1.2 url(统一资源定位符)
- 协议://主机:端口/路径(get请求参数不算url)
1.3、HTTP 版本 一般是1.1
- 1.1 和 1.0 区别?
- 长连接 流水线传输 断点续传 加错误状态码
- 1.1 和 1.0 区别?
- 1.1 请求方法: GET POST PUT DELETE
2、 请求头
Host:主机名,(服务器名字)
UserAgent: 客户端信息,如操作系统 浏览器信息
Connection: keep-alive http1.1起 长连接(不用每次请求建立连接)
Content-Type: 发送端发送的类型
Accept:客户端能接受类型
3、 空行
- 4、 数据
HTTP响应
结构同理没什么不同
请求行变成了状态行
1、 状态行:
1.1、 版本
1.2、 状态码 + 状态信息
1xx表示继续发送请求;
2xx表示请求成功;
3xx表示重定向;
4xx表示客户端错误;
5xx表示服务器错误。
301 302 (重定向redirect,网址改变,两次请求 别于 转发forword)
304(访问缓存)
404 访问资源不存在
2、 响应头
Server:服务器软件信息
Date: 响应时间
Set-Cookies 设置 cookie
Content-Type
Location: 如果重定向指向新地址
3、 空行
- 4、 数据