HTTP协议

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP协议

Content-Type指响应内容的类型,常见的text/html表示HTML网页。请注意,浏览器就是依靠Content-Type来判断响应的内容是网页还是图片,是视频还是音乐。浏览器并不靠URL来判断响应的内容,所以,即使URL是http://example.com/abc.jpg,它也不一定就是图片。

HTTP使用统一资源标识符(Uniform Resource Identifier, URI)来传输数据和建立连接。

URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。

URI和URL的区别

URI 是统一资源标识符,而 URL 是统一资源定位符。
URL是URI的一个特例,它包含了定位Web资源的足够信息。
URI 还包括一个子类,即统一资源名称 (URN),它命名资源,但是不包括访问方式。

在这里插入图片描述

一个完整的URL

包括以下几部分:
http://www.ABCD.com:8080/news/index.html?boardID=1&ID=2&page=3#name

  1. 协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在"HTTP"后面的“//”为分隔符。
  2. 域名部分:该URL的域名部分为“www.ABCD.com”。一个URL中,也可以使用IP地址作为域名使用。
  3. 端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口。
  4. 虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”
  5. 文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.html”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名。
  6. 锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分
  7. 参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=1&ID=2&page=3”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符

HTTP请求的传输过程

首先作为发送端的客户端在应用层(HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。
接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。
在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。
接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP请求。

一次完整http请求的过程

在HTTP工作开始之前,客户端首先要通过网络与服务器建立连接,该连接是通过 TCP 来完成的,该协议与 IP 协议共同构建 Internet,即著名的 TCP/IP 协议族,因此 Internet 又被称作是 TCP/IP 网络。HTTP 是比 TCP 更高层次的应用层协议,根据规则,只有低层协议建立之后,才能进行高层协议的连接,因此,首先要建立 TCP 连接,一般 TCP 连接的端口号是80。

  1. 进行DNS域名解析(浏览器缓存、系统缓存、hosts、DNS服务器)
  2. 建立 TCP 连接
  3. 客户端发送请求命令 例如:GET /sample/hello.jsp HTTP/1.1
  4. 客户端发送请求头信息:以头信息的形式向服务器发送一些的信息,之后客户端发送了一空白行来通知服务器,它已经结束了该头信息的发送
  5. 服务器应答:例如: HTTP/1.1 200 OK 响应的第一部分是协议的版本号和响应状态码
  6. 服务器返回响应头信息:正如客户端会随同请求发送关于自身的信息一样,服务器也会随同响应向用户发送关于它自己的数据及被请求的文档;
  7. 服务器向客户端发送数据:服务器向客户端发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以 Content-Type 响应头信息所描述的格式发送用户所请求的实际数据;
  8. 服务器关闭 TCP 连接

一旦服务器向客户端返回了请求数据,它就要关闭 TCP 连接,然后如果客户端或者服务器在其头信息加入了这行代码 Connection:keep-alive ,TCP 连接在发送后将仍然保持打开状态,于是,客户端可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

HTTP 协议报文结构

用于 HTTP 协议交互的信息被称为 HTTP 报文。请求端(客户端)的 HTTP 报文叫做请求报文;响应端(服务器端)的叫做响应报文。HTTP 报文本身是由多行(用 CR+LF 作换行符)数据构成的字符串文本。
HTTP 报文大致可分为报文首部和报文主体两部分。两者由最初出现的空行(CR+LF)来划分。报文主体并不是必须的。

在这里插入图片描述

请求报文结构

请求报文的首部内容由以下数据组成:
请求行 —— 包含用于请求的方法、请求 URI 和 HTTP 版本。
首部字段 —— 包含表示请求的各种条件和属性的各类首部。(通用首部、请求首部、实体首部以及RFC里未定义的首部如 Cookie 等)

在这里插入图片描述在这里插入图片描述

响应报文结构

状态行 —— 包含表明响应结果的状态码、原因短语和 HTTP 版本。
首部字段 —— 包含表示请求的各种条件和属性的各类首部。(通用首部、响应首部、实体首部以及RFC里未定义的首部如 Cookie 等)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

UDP协议

  1. 面向无连接的通讯协议
  2. 通讯时不需要接收方确认,属于不可靠的传输
  3. 传输速度快,但是容易丢失数据

UDP主要用于那些面向查询—应答的服务,这些服务需要交换的信息量较小。
使用UDP的服务包括:

  1. NTP(网络时间协议)和DNS(DNS也使用TCP),包总量较少的通信(DNS、SNMP等)
  2. 视频、音频等多媒体通信(即时通信)
  3. 限定于 LAN 等特定网络中的应用通信
  4. 广播通信(广播、多播)

常用的QQ,就是一个以UDP为主,TCP为辅的通讯协议。

TCP 和 UDP 的优缺点无法简单地、绝对地去做比较:TCP 用于在传输层有必要实现可靠传输的情况;而在一方面,UDP 主要用于那些对高速传输和实时性有较高要求的通信或广播通信。TCP 和 UDP 应该根据应用的目的按需使用。

报文组成

  1. 源端口:源端口号,在需要对方回信时选用,不需要时可用全0。
  2. 目的端口:目的端口号,这在终点交付报文时必须要使用到。
  3. 长度: UDP用户数据包的长度,其最小值是8(仅有首部)。
  4. 校验和:检测UDP用户数据报在传输中是否有错,有错就丢弃。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值