UDP协议

  • UDP协议全称是用户数据报协议,在网络中她与TCP协议一样用于处理数据包,两个协议同处于协议栈的传输层,和TCP不同的是,UDP是一种无连接的协议栈。

  • 因为UDP是无连接的,所以相对来说,UDP的报头比TCP要简单的多了。如下图:

  • UDP特点:

    • 第一UDP是一个非连接的协议,传输数据之前源端口和终端不建立连接,当他想传送时就简单的去抓取来自应用城西的数据,并尽可能快的把他扔在网络上,在发送端,UDP传送数据的速递仅仅是受应用程序生成数据的速度,计算机的计算能力,和传输带宽的现在;在接受端,UDP吧每个消息段放再队列中,应用程序每次从队列中读一个消息段。
    • 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一天服务器可以同时向多个客户端传输相同的消息
    • UDP信息包的标题短,只有8字节,相对于TCP的20字节信息包的额外开销很小
    • 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率,传输带宽,源端和终端主机性能的限制
    • UDP使用尽量大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这个表中有许多参数)
    • UDP是面向报文的,发送方的UDP对应应用程序交下来的报文,在添加首部后就向下交付给IP层,即不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
  • 我们经常用PING命令来测试两台主机之间TCP/IP通信是否正常,其实PING命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的信息及时反馈回来,那么网络就是通的。

HTTP协议

  • HTTP协议名为超文本传输协议。这个协议在TCP/IP协议栈的应用层,因此,我们无需关系HTTP是如何传输的,只需要看我们传输的内容,能否正确的被接收端识别。
  • HTTP是基于TCP实现的,简单说来,TCP协议负责可靠的内容传输,HTTP协议负责识别内容,两者本身不在一个层面,没有可比性。
  • HTTP是无状态的意思是,每一次的内容解析是没有关联的。TCP有状态是指两端在连接过程的时候是有在连接中的状态
  • HTTP包含两种报文类型,请求报文,响应报文。
    • 请求报文用在客户端对服务器的请求时候使用的报文格式
    • 响应报文用在服务响应请求的报文格式
HTTP协议请求消息结构
  • 客户端发生一个HTTP请求奥服务器的请求消息包括一下格式:请求行(request line),请求头部(header),空行和请求数据四个部分组成,下图给出了请求报文的一般格式。
  • 如上图所示HTTP消息主要包含以下实质内容(空格和换行也不能少):
    • 请求方法
    • URL:统一资源定位符
    • HTTP请求头部
    • HTTP请求体
  • 以下是一个HTTP请求的例子,从Fiddler抓包工具中抓出来的一个请求案例。
//1. post:请求方法
//2. http://edu.zhenai.com/api/business/supremecourse/course.do:请求URL
//3. HTTP/1.1:HTTP协议以及版本
POST http://edu.zhenai.com/api/business/supremecourse/course.do HTTP/1.1
//以下报文头部
Cookie: token=506188.1587368100293.ef83f599f1a54833d0cc5124da98140a.test; token=506188.1587368100293.ef83f599f1a54833d0cc5124da98140a.test; sid=88TIsgom9Xqw3GMLTDv0;
User-Agent: PostmanRuntime/7.25.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 4b0c8482-cce5-40e2-a7b9-a251378c6475
Host: edu.zhenai.com
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
zone: 1027071-liaojiamin
Host: edu.zhenai.com
//以下报文体
supremeCourseID=129&allow=true
HTTP请求方法
  • HTTP包含来多种不同的请求方法,每一种请求方式用在不同的场景
序号 方法 描述
1 GET 请求指定页面信息,并放回实体主体
2 HEAD 类似get请求,不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表达或者上传文件),数据被包含在请求体中,POST请求可能会操作新的资源的建立和/或已有资源的修改
4 PUT 从客户端想服务器传送的数据取代指定的文档内容
5 DELETE 请求服务器删除指定内容
6 CONNECT HTTP1.1协议中预留给能够将连接改为管道方式的代理服务器
7 OPTIONS 允许客户端查看服务器的性能
8 TRACE 回显服务器收到的请求,主要用于测试或诊断
URL-- 统一资源定位符