目录

HTTP (HyperText Transfer Protocol)超文本传输协议.

Java LoRaWAN 协议项目源码 java开发http协议_TCP

一、概述

1.计算机网络体系分层结构

OSI七层模型

TCP/IP概念四层模型

功能

TCP/IP协议族

(1)应用层

(1)应用层

文件传输,电子邮件,文件服务虚拟终端

HTTP,DNS,TFTP,SNMP,FTP,SMTP,Telnet

(2)表示层

(1)应用层

数据格式化,代码转化,数据加密

没有协议(没有传输)

(3)会话层

(1)应用层

解除或者建立别的接点的联系

没有协议

(4)传输层

(2)传输层

提供端对端的接口

TCP,UDP

(5)网络层

(3)网络层

为数据包选择路由

IP,ICMP,RIP,OSPF,BGP,IGMP

(6)数据链路层

(4)链路层

传输有地址的帧和错误检测功能

SLIP,CSLIP,PPP,ARP,RARF,MTU

(7)物理层

(4)链路层

以二进制的形式在物理媒体上传输数据

ISO2110,IEEE802.2

2.TCP /IP 通信传输流

Java LoRaWAN 协议项目源码 java开发http协议_TCP_02


(1)首先发送端客户在应用层**(HTTP协议)发送一个页面的HTTP请求,
(2)在传输层,
(+TCP协议)把应用层的HTTP报文进行分割,(并在报文上打上标记序号和端口号发给网络层.)
(3)网络层(IP协议)(
+MAC地址**)请求就齐全了,发给链路层发送数据

(4)链路层(+以太网),发送数据(如图)

Java LoRaWAN 协议项目源码 java开发http协议_客户端_03

二、HTTP工作过程

Java LoRaWAN 协议项目源码 java开发http协议_HTTP_04

1.建立TCP连接

HTTP开始工作前先建立TCP连接,(TCP、IP共同构建为Internet,这就是著名的TCP/IP 协议,Internet又被称作TCP、IP网络)HTTP–>TCP–>IP,底层协议创建后才能创建更高级的协议。TCP 端口号默认80

2.客户端发送请求命令

TCP建立后,客户端就会向服务端发送请求命令,例如
get/sample/index.html HTTP/1.1

3.客户端发送请求头信息

客户端发送请求命令后就发送请求头信息(自身的信息比如User-Agent),(头信息发送完全后会再发送一段空白行来通知服务器结束了头信息的发送)

4.服务器应答

客户端发送完成请求命令,服务器应答,例如返回
HTTP/1.1 200 OK
协议版本号 + 状态码

5.服务器返回相应头信息

和客户端发送头信息一样,他会发送自己的信息和被请求的文档,

6.返回数据

发送完成头信息后,继续发送一个空白行来表示头信息发送完成,然后。就一Content-Type响应头信息的格式(例如:content-type: text/html; charset=utf-8)返回用户所需的数据。

7.断开TCP连接

连接立马断开, 除非头信息有
Connection: keep-alive 就保持连接。(可以节省再次连接消耗的资源)但是保持但是什么都不做的话也是消耗资源。

三、HTTP协议基础

1.通过请求和响应完成通信(客户端先发请求)

就是客户端先建立通信,不然服务端不会鸟你

2.HTTP不保存状态(可用Cookie技术)
3.使用Cookie管理之前的状态

Java LoRaWAN 协议项目源码 java开发http协议_客户端_05


(1)服务端:在响应的报文中添加

SetCookie:。。。通知客户端保存Cookie

(2)客户端:请求报文里加上

Cookie:_uuid=4C130B0A-443F-5841-FF70-…

发送之前保存的Cookie

(3)服务端:获取Cookie并判断哪一个用户,并返回对应的信息(因此有些Cookie会保存用户的登录信息,有安全隐患)

4. 使用URL定位资源
5.发送请求的方法(get、post)

Java LoRaWAN 协议项目源码 java开发http协议_HTTP_06

6.持久连接

默认持久连接

7.管线化(并发同时多请求)

四、(报文)HTTP报文结构

1.报文的定义
  • 用于 HTTP协议用户交互的信息叫做报文。
  • 客户端:发送请求报文
  • 服务端:回复响应报文
  • 报文是由多行(使用CR+LF(Carriage Return回车符+Line Feed换行符))为换行符的字符串
2.报文的结构(分为请求报文结构和响应报文结构)

报文一般由报文部首(关键信息)和报文主体(数据)组成(但是不一定有主体)如图

Java LoRaWAN 协议项目源码 java开发http协议_HTTP_07

2.1 请求报文结构

Java LoRaWAN 协议项目源码 java开发http协议_客户端_08


实例

Java LoRaWAN 协议项目源码 java开发http协议_客户端_09

2.2 报文响应结构

Java LoRaWAN 协议项目源码 java开发http协议_客户端_10


实例

Java LoRaWAN 协议项目源码 java开发http协议_HTTP_11

五、(报文)请求行,行状态

1,请求行

举个例子:下面这个是一个HTTP的请求的报文

GET /index.html HTTP/1.1
Host: sample.com

第一行就是请求行,

  • (1)get为请求方法,参考三、5.请求的方法
  • (2)/index.html是资源的对象,URL
  • (3)HTTP/1.1 是 版本号,现在都是 1.1
    总合来看,就是访问 /index.html 里面的资源
2.状态行

举个例子,下面是一个HTTP响应报文

HTTP/1.1  200  OK
Date: Mon, 10 Jul 2017 15:50:06 GMT
Content-Length: 256
Content-Type: text/html

第一行就是状态行
2XX OK
3XX 重定向
4XX 客户端错误
5XX 后端服务器错误

更多转态码参考百度百科

六、(报文)首部字段(重点分析)

1. 部首字段概述
  • HTTP报文包括 报文部首和报文主体(数据)
  • 报文部首包括请求(响应)行和部首字段(其中部首字段的内容最为丰富,你检查的时候乱七八糟的全是部首)
  • 部首字段:提供报文主体大小,所使用的语言,认证信息等内容
    部首字段在报文中的结构如图

Java LoRaWAN 协议项目源码 java开发http协议_Java LoRaWAN 协议项目源码_12

报文字段的详细介绍很多,点击查看

七、常见相应码

八、(报文)HTTP报文主体

九、HTTP协作和web服务器