应用层协议@传输层协议

目录

    1、自定制协议:

    2、知名协议:

      HTTP协议实现

      HTTP协议格式

   3. UDP协议

3.1 UDP协议端格式:UDP协议报头只有8个字节

3.2 UDP特点

    4. TCP协议

4.1 TCP协议端格式

4.2 TCP数据传输格式

4.3 确认应答机制

4.4 超时重传机制

4.5 TCP应答管理机制


应用层协议:应用层是面对程序员的一层,应用程序是程序员自己写的,因此应用层协议由程序员自己决定。

    1、自定制协议:

  • 序列化:将多个数据对象按照指定的协议进行组织成为持久化存储/数据传输的二进制数据串。
  • 反序列化:将二进制数据串通过指定协议进行解析得到各个数据对象。
  • 序列化方式:结构体二进制序列化,json,protobuf.

    2、知名协议:

  • HTTP-应用层的超文本传输协议-html。
  • 网址:URL-统一资源定位符-定位网络中某台主机上的某个资源。
  • 如何定位:url包含的要素-协议方案名称://用户名:用户密码@服务器IP:服务器PORT/资源路径?查询字符串#片段标识符
  • 协议方案名称:确定本次请求使用什么协议。
  • 用户名/密码:本次访问的客户端认证信息(很少使用)。
  • 服务器IP/PORT:定位网络中的一台主机上的处理进程。
  • 资源路径:请求服务器上的某个资源。
  • 查询字符串:客户端提交给服务端的数据,由key=value键值对组成,键值对之间以&符号进行间隔。
  • urlencode:url编码,提交的数据中不能出现特殊字符,一旦包含就要进行转义,将特殊字符每个字节转换为16进制数字字符,使用%标识。
  • urldecode:url解码,在查询字符串中遇到%,将其第一个字符转换为数字乘以16加上第二个字符转换后的数字。

      HTTP协议实现

  • 抓包工具:wireshark/fiddler.
  • wireshark:网卡抓包工具,抓取流经网卡的所有数据流量-什么包都能抓。
  • fiddler:浏览器的代理工具,通过代理实现数据抓包-专业的http抓包工具。
  • http/https:https是加密后的http协议,若要抓取https中的数据,则需要进行配置。

      HTTP协议格式

    请求:

首行GET http://123.207.58.25/admin HTTP/1.1 以空格进行间隔包含三个要素,最终以\r\n作为结尾。

请求方法:GET/POST/HEAD/PUT/DELETE/CONNECT/PATCH/OPTIONS/TRACE

  • GET-请求实体资源-也可以通过url中查询字符串向服务器提交数据-数据不安全/url长度有限制(各个服务器应用商的限制)
  • POST-主要用于向服务器提交数据,提交的数据在正文中;GET请求没有正文,POST请求有正文。
  • HEAD-类似于GET,相较于GET,HEAD只响应头部,而不响应正文。

URL: http://123.207.58.25/admin

协议版本:HTTP://1.1   0.9/1.0/1.1/2.0

  • 0.9:仅用于传输html数据,并且只有GET请求方法且协议格式不完整。
  • 1.0:正式规定了http协议格式,并且增加了多种请求方法且支持了不同文件格式的数据流。
  • 1.1:在1.0的基础上增加了更多请求方法和头部描述信息且支持了长连接,管线化传输(响应的顺序必须与请求的顺序保持一致)。
  • 2.0:采用二进制流传输,并且进行多路复用(响应顺序可以不用与请求顺序保持一致,头部标识了请求信息)且允许服务端主动推送数据。
  • 短连接:http基于在传输层tcp实现通信,建立连接,发送一个请求,得到响应后,则关闭连接。
  • 长连接:一次连接可以发送多条请求。

头部:描述本次请求的关键字段信息,由key:val形式的键值对组成,并且每个键值对以\r\n作为结尾 key:val\r\nkey:val\r\n

  • Connection-控制长/短连接
  • Cache-Control-缓存控制
  • User-Agent-客户端属性
  • Accept-描述自己所能接收的数据属性
  • Content-Length-描述正文长度
  • Content-Type-描述正文数据类型

早期http是短连接通信,是一个无状态协议,不会保存客户端的状态,每次访问都需要进行登录,因此引入Cookie保存客户端状态,Cookie-持续在通信中描述客户端的通信状态,但是不够安全。

空行:间隔头部与正文;接收http数据的时候,当连续收到两个\r\n(\r\n\r\n)的时候,则认为头部到此结束。

先获取完整头部,通过头部中的Content-Length获取正文长度,然后获取指定长度正文,通过这种方式每次获取完整一条http请求数据。

正文:提交给服务端的数据。

    响应:

首行HTTP/1.1 303 See Other 包含三个要素,以空格进行间隔,以\r\n作为结尾

协议版本:0.9/1.0/1.1/2.0

响应状态码:表示对本次的请求服务端所做出的响应结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值