网络协议之HTTPUDP

网络协议

  • HTTP协议 (超文本传输协议)

    • URL (统一资源定位符)

      https://www.baidu.com/s?wd=url&rsv_spt=1#ch2
      

      ​ | | | | | |

      协议名 服务器地址 文件路径 查询字符串 查询参数 片段标识符

      像 / ? : 等这样的字符,已经被url当做特殊意义理解了,因此这些字符不能随意出现。 比如,某个参数中需要带有这些特殊字符,就必须先对特殊字符进行转义

      转义规则:

      将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式

    • HTTP协议格式

      • 首行: [方法] + [url] + [版本]
      • Header:请求的属性,冒号分割的键值对,每组属性之间使用\n分隔;遇到空行表示Header部分结束
      • Body:空行后面的内容都是Body Body允许为空字符串,如果Body存在,则在Header中会有一个Content-Length属性来表示Body的长度
    • HTTP响应

      • 首行: [版本号] + [状态码] + [状态码解释]
      • Header: 请求的属性, 冒号分割的键值对,每组属性之间使用\n分割;遇到空行表示Header部分结束
      • Body:空行后面的内容都是Body,Body允许空字符串,如果Body,则在Header中会有一个Content-Length属性来表示Body的长度;如果服务器返回一个html页面,那么html页面的内容就是在Body中
    • HTTP的方法

      方法 说明 HTTP版本
      GET 获取资源 1.0
      POST 传输实体 1.0
      PUT 传输文件 1.0
      HEAD 获得报文首部 1.0
      DELETE 删除文件 1.0
      OPTIONS 询问支持的方法 1.1
      TRACE 追踪路径 1.1
      CONNECT 要求用隧道协议连接代理 1.1
      LINK 建立和资源之间的关系 1.0
      UNLINK 断开连接关系 1.0
    • HTTP状态码

      编号 类别 原因
      1xx informational 接收的请求正在处理
      2xx Success 请求正常处理完毕
      3xx Redirection 需要进行附加操作以完成请求
      4xx Client Error 服务器无法处理请求
      5xx Server Error 服务器处理请求出错

      常见状态码:

      200 请求成功

      301 访问的资源永久移动 返回新的url 之后都使用新的url访问

      302 临时移动 客户端依旧使用原有url访问

      403 拒接执行

      404 无法找到资源

    502 Bad Gateway

    504 Gateway time-out

    • HTTP常见Header
      • Content-Type 数据类型
      • Content-Length Body的长度
      • Host:客户端告知服务器,所请求的资源是在哪个主机的哪个端口上
      • User-Agent:声明用户的操作系统和浏览器版本信息
      • referer: 当前页面是从哪个页面跳转过来的
      • location:搭配3xx状态码使用,告诉客户端接下来去哪访问
      • Cookie 用于在客户端存储少量信息,通常用于实现会话session的功能
  • 网络工具

    • netstat 是一个用来查看网络状态的重要工具

      • n 拒接显示别名 能显示数字的全部转化成数字
      • l 仅列出在listen的服务
      • p 显示建立相关链接的程序名
      • t 仅显示tcp
      • u 仅显示udp
      • a 显示所有选项 默认不显示LISTEN相关
    • pidof 在查看服务器的进程id

      pidof [进程名]

  • UDP协议

网络协议之HTTPUDP_第1张图片

  • UDP的特定

    1. 无连接:直到对端ip和端口就可以直接传输, 不需要连接
    2. 不可靠:没有确认机制, 没有重传机制, 如果因为网络故障无法发到对方UDP协议层也不会给应用层返回任何信息
    3. 面向数据报:不能够灵活的控制读写数据的次数和数量
  • 面向数据报

    应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并

  • UDP的缓冲区

    1. UDP没有真正意义上的发送缓冲区,调用sendto会直接交给内核,由内核交给网络层处理后续的传输
    2. UDP具有接受缓冲区,但是这个接受缓冲区不能保证收到的UDP报和发送的UDP报的顺序一致;如果缓冲区满了,再到达的UDP数据就会被丢弃
  • UDP注意事项

    UDP的最大传输数据长度是64k(包含UDP首部), 所以在应用层应该分包,多次发送,并在接受端手动拼装

  • 基于UDP的应用层协议

    NFS TFTP DHCP DNS

  • UDP 通信基本流程

    UDP的最大传输数据长度是64k(包含UDP首部), 所以在应用层应该分包,多次发送,并在接受端手动拼装

  • 基于UDP的应用层协议

    NFS TFTP DHCP DNS

  • UDP 通信基本流程

网络协议之HTTPUDP_第2张图片

你可能感兴趣的:(网络,网络)