HTTP、TCP、IP个人笔记

来源:互联网 发布:手机淘宝客服是卖家吗 编辑:程序博客网 时间:2024/06/07 20:46

HTTP

是目前应用最广泛的应用层协议,它规定了浏览器和服务器通信的数据格式。就像写信要按照某种格式写一样。

http请求:

包括请求行、请求头、请求正文

  • 请求行:请求方法(GET OR POST OR 其他) + 请求URL + http版本号
  • 空行
  • 请求头:包括很多可选的键值对,通过百度进行抓包,得到几个

    • Accept-Encoding:指定网页编码,例如gzip、deflate、sdch、br
    • Accept-Language:指定网页自然语言
    • Cache-Control:控制缓存

      常用字段
      Public:所有内容缓存
      Private:缓存到私有缓存
      no-cache:所有内容不缓存
      no-store:所有内容不缓存且不存到临时文件中
      max-age:最大持续时间

    • Connection:一种在http中的长连接的选项

    • Cookie:小甜饼,用于保存信息
    • Host:对方的主机名
    • Referer:指定从什么URL过来的
    • User-Agent:提供一些浏览器的信息
  • 空行

  • 请求正文,里面一般存放了post时的数据

http响应

包括状态行、响应头、响应正文

  • 状态行:http版本 + 状态码 + 状态码的描述

    状态码
    1XX:表示请求已接收,继续处理
    2XX:请求成功
    3XX:请求重定向
    4XX:客户端错误
    5XX:服务器错误

    > 常用状态码:    200:客户端请求成功    302:临时重定向,跳转地址通过Location指定    400:客户端请求有语法错误    403:服务器收到请求,但是拒绝提供服务    404:请求资源不存在    500:服务器发生不可预计错误
  • 响应头:

    • Cache-Control、Connection等有些是请求相应共有的
    • Content-Encoding:指定相应的编码
    • Content-Type:指定相应的媒体类型
    • Server:服务器名称
    • Content-Length:指定实体正文的长度
  • 空行

  • 响应正文:就是准备显示在浏览器窗口上的东西

    实际上,www.baidu.com这个文件只有两行

    <!DOCTYPE html><!--STATUS OK-->

所谓的http,主要就是在学习请求头和响应报头

TCP

TCP向上层提供面向连接的、可靠的连接服务,通过多种方式保证其发送的数据一定会传送给对方。就像写完信然后封装好寄出去一样

TCP对来自上层的数据进行分组,加上相应的TCP头部,构成一定的格式,然后发送出去。

  • TCP 数据包
    TCP数据包
    这是一个TCP数据包的基本形式。

    • 端口号:16位端口对应电脑上的16位端口
    • 序号确认号:是TCP面向连接的一部分,通过不同数据包的号码来控制发送和接收
    • 首部长度:每增加一代表首部增加4个字节,最小为5(0101),代表首部最小为20字节
    • (保留及)六个标志位:每个标志位为1或者0,用来在传输过程中发送某种关键信息,常用为ACK、SYN、FIN。
    • 窗口大小:TCP协议通过一个滑动窗口来控制发送接收流量。简单说的说就是一次发送多个,每收到一个ACK就将窗口移动一位。
    • 16位检验和:同时校验首部和数据
    • 16位紧急指针:指示紧急指针的个数(之后是普通数据),仅在标志位URG=1时启用
    • 选项:最长40个字节

    IP

    这是在网络层起作用的协议,发送数据到确定主机。
    IP协议是一种!尽力而为!的协议,它会尽量发送数据包,而不会保证数据包的完整。
    IP数据包的格式为:
    这里写图片描述

  • 版本:主要指明是IPV4还是IPV6

  • 首部长度:至少为5,至多为15,每一对应四字节,即 5 * 4 = 20是首部的最小长度,若首部长度不是4的整数倍会有填充
  • 服务类型:
  • 总长度:指明这个IP数据包的总长度,最大65535,但是由于链路层限制,所以最大1500
  • 16位标识:在IP分割数据时,指明是同一个数据的IP包
  • 标志:表示还有无分片和能不能分片
  • 片偏移:指明前面来自同一个数据的IP包的相对位置
  • 生存时间:指明这个IP数据包可以被转发多少次,每转发一次减一。
  • 8位协议:指定所携带的数据是什么协议(用的TCP还是UDP还是什么什么。。)
  • 首部校验和:只检验数据包的首部,不检验数据。使用CRC算法。
  • 原地址和目标地址:各32位,对应IPV4的32位地址。
0 0