TCP/UDP IP HTTP报文格式

TCP (重点)

image-20230529112354310

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

image-20230529112423428

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)数据报格式

image-20230529112506199

1、 IPIP 2字节 0-42亿

2、部首 长度 (0-15)4 *20-60 字节 (和TCP一样)

HTTP 重点!

image-20230529112514307

(注:SP代表空格,CR代表回车,LF代表换行)

请求行(request line)、请求头(header)、空行和请求数据(request data)

image-20230529112519874

所以重点在请求行于请求头上:

  • 1、 请求行

    • 1.1 请求方法: GET POST PUT DELETE
      • GET和PUT的区别
        • GET:请求请求参数于对应的值放在url?后面长度受限(1024),不安全,没有数据部分(?参数1=值1&参数2)
        • PUT:请求参数放在数据里面
    • 1.2 url(统一资源定位符)

      • 协议://主机:端口/路径(get请求参数不算url)
    • 1.3、HTTP 版本 一般是1.1

      • 1.1 和 1.0 区别?
        • 长连接 流水线传输 断点续传 加错误状态码
  • 2、 请求头

    • Host:主机名,(服务器名字)

      UserAgent: 客户端信息,如操作系统 浏览器信息

      Connection: keep-alive http1.1起 长连接(不用每次请求建立连接)

      Content-Type: 发送端发送的类型

      Accept:客户端能接受类型

  • 3、 空行

  • 4、 数据

HTTP响应

image-20230529112556806

结构同理没什么不同

请求行变成了状态行

image-20230529112610372

  • 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、 数据