Http协议JSON格式
计算机⽹络
计算机⽹络是指将地理位置不同的具有独⽴功能的多台计算机及其外部设备,通过通信线路连接起来,在⽹络操作系统,⽹络管理软件及⽹络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。计算机⽹络之间以何种规则进⾏通信,就是⽹络模型研究问题?
⽹络模型⼀般是指浏览器json格式化
OSI(Open System Interconnection开放系统互连)参考模型
TCP/IP参考模型
⽹络参考模型
在互联⽹中实际使⽤的是TCP/IP参考模型。实际存在的协议主要包括在:物理层、数据链路层、⽹络层、传输层和应⽤层。各协议也分别对应这5个层次⽽已。
【1】物理层:主要定义物理设备标准,如⽹线的接⼝类型、光纤的接⼝类型、各种传输介质的传输速率等。它的主要作⽤是传输⽐特流(就是由1、0转化为电流强弱来进⾏传输,到达⽬的地后在转化为1、0,也就是我们常说的数模转换与模数转换),这⼀层的数据叫做⽐特。
【2】数据链路层:定义了如何让格式化数据以进⾏传输,以及如何让控制对物理介质的访问,这⼀层通常还提供错误检测和纠正,以确保数据的可靠传输。
【3】⽹络层:在位于不同地理位置的⽹络中的两个主机系统之间提供连接和路径选择,Internet的发展使得从世界各站点访问信息的⽤户数⼤⼤增加,⽽⽹络层正是管理这种连接的层。
【4】传输层:定义了⼀些传输数据的协议和端⼝号(WWW端⼝80等),如:TCP(传输控制协议,传输效率低,可靠性强,⽤于传输可靠性要求⾼,数据量⼤的数据),UDP(⽤户数据报协议,与TCP特性恰恰相反,⽤于传输可靠性要求不⾼,数据量⼩的数据,如QQ聊天数据就是通过这种⽅式传输的), 主要是将从下层接收的数据进⾏分段和传输,到达⽬的地址后再进⾏重组,常常把这⼀层数据叫做段。
【5】会话层:通过传输层(端⼝号:传输端⼝与接收端⼝)建⽴数据传输的通路,主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
【6】表⽰层:可确保⼀个系统的应⽤层所发送的信息可以被另⼀个系统的应⽤层读取。例如,PC程序与另⼀台计算机进⾏通信,其中⼀台计算机使⽤扩展⼆⼀⼗进制交换码(EBCDIC),⽽另⼀台则使⽤美国信息交换标准码(ASCII)来表⽰相同的字符。如有必要,表⽰层会通过使⽤⼀种通格式来实现多种数据格式之间的转换。
【7】应⽤层: 是最靠近⽤户的OSI层,这⼀层为⽤户的应⽤程序(例如电⼦邮件、⽂件传输和终端仿真)提供⽹络服务。
应⽤层
· DHCP(动态主机分配协议)
· DNS (域名解析)
· FTP(File Transfer Protocol)⽂件传输协议
· HTTP (Hypertext Transfer Protocol)超⽂本传输协议
· IRC (Internet Relay Chat )⽹络聊天协议
· POP3 (Post Office Protocol 3)即邮局协议的第3个版本
· SMTP (Simple Mail Transfer Protocol)即简单邮件传输协议
· SNMP (Simple Network Management Protocol,简单⽹络管理协议)
· SSH (Secure Shell)安全外壳协议
· SSL: 安全套接字层协议
传输层
·TCP(Transmission Control Protocol)传输控制协议
· UDP (User Datagram Protocol)⽤户数据报协议
⽹络层
·IP(IPv4 · IPv6) Internet Protocol(⽹络之间互连的协议)
·ARP : Address Resolution Protocol即地址解析协议,实现通过IP地址得知其物理地址。
·RARP :Reverse Address Resolution Protocol 反向地址转换协议允许局域⽹的物理机器从⽹关服务器的 ARP 表或者缓存上请求其 IP 地址。
·ICMP :(Internet Control Message Protocol)Internet控制报⽂协议。它是TCP/IP协议族的⼀个⼦协议,⽤于在IP主机、路由器之间传递控制消息。
数据链路层
802.11 · 802.16 · Wi-Fi · WiMAX · ATM · DTM · 令牌环 · 以太⽹ · FDDI · 帧中继 · GPRS · EVDO · HSPA ·HDLC · PPP · L2TP · ISDN
物理层
以太⽹物理层 · 调制解调器 · PLC · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线
各层重要对应的协议
OSI七层⽹络模型TCP/IP四层概念模型对应⽹络协议
应⽤层(Application)应⽤层HTTP、TFTP, FTP, NFS, WAIS、SMTP、DNS
表⽰层(Presentation)
会话层(Session)
传输层(Transport)传输层TCP, UDP
⽹络层(Network)⽹络层IP, ICMP, ARP, RARP, AKP, UUCP 数据链路层(Data Link)
物理层(Physical)⽹络层到物理层
⽹络通信三要素
IP地址:InetAddress,⽹络中计算机的唯⼀标识,不易记忆,可⽤主机名。
端⼝号
⽤于标识进程的逻辑地址,不同进程的标识,netstat -ano
传输协议
通讯的规则
常见协议:TCP,UDP
举例:我想和主席说话
1.我要到主席(ip)
2.对他说话,对⽿朵说(端⼝号);
3.我说:I love the motherland但是听不懂。我只能⽤汉语说。说我爱我的祖国(协议)
UDP
将数据源和⽬的封装成数据包中,不需要建⽴连接;每个数据报的⼤⼩在限制在64k;因⽆连接,是不可靠协议;不需要建⽴连接,速度快TCP
建⽴连接,形成传输数据的通道;在连接中进⾏⼤数据量传输;通过三次握⼿完成连接,是可靠协议;必须建⽴连接,效率会稍低
HTTP协议
HTTP简介
超⽂本传输协议(Hyper Text Transfer Protocol,
HTTP)规定客户端如何从服务器端获取⽂档和向服务器端提交表单内容,以及服务器端如何响应这些请求和提交。URL
统⼀资源标识符(Uniform Resource Identifier,URI)
统⼀资源定位符(Uniform Resource Locator,
URL)是互联⽹上⽤来标识某⼀处资源的地址。以下⾯这个URL为例,介绍下普通URL的各部分组成:
www.haogu:8080/news/index.php?boardID=5&ID=24618&page=1#name
从上⾯的URL可以看出,⼀个完整的URL包括以下⼏部分:
1. 协议部分:该URL的协议部分为“http:”,这代表⽹页使⽤的是HTTP协议。在Internet中可以使⽤多种协议,如HTTP,FTP等等
本例中使⽤的是HTTP协议。在"HTTP"后⾯的“//”为分隔符。
2. 域名部分:该URL的域名部分为“www.hg-zn”。⼀个URL中,也可以使⽤IP地址作为域名使⽤。
3. 端⼝部分:跟在域名后⾯的是端⼝,域名和端⼝之间使⽤“:”作为分隔符。端⼝不是⼀个URL必须的部
分,如果省略端⼝部分,将采
⽤默认端⼝80,8080端⼝是被⽤于WWW代理服务的,可以实现⽹页浏览,经常在访问某个⽹站或使⽤代理服务器的时候,会加上":8080"端⼝号。另外Apache Tomcat web server安装后,默认的服务端⼝就是8080.
4. 虚拟⽬录部分:从域名后的第⼀个“/”开始到最后⼀个“/”为⽌,是虚拟⽬录部分。虚拟⽬录也不是⼀个URL必须的部分。本例中
的虚拟⽬录是“/news/”
5. ⽂件名部分:从域名后的最后⼀个“/”开始到“?”为⽌,是⽂件名部分,如果没有“?”,则是从域名后的最后⼀个“/”开始
到“#”为⽌,是⽂件部分,如果没有“?”和“#”,那么从域名后的最后⼀个“/”开始到结束,都是⽂件名部分。本例中的⽂件名是“index.asp”。⽂件名部分也不是⼀个URL必须的部分,如果省略该部分,则使⽤默认的⽂件名。
6. 参数部分:从“?”开始到“#”为⽌之间的部分为参数部分,⼜称搜索部分、查询部分。本例中的参数部分
为“username=lisi&password=24618&page=1”。参数可以允许有多个参数,参数与参数之间⽤“&”作为分隔符。
7. 锚部分:从“#”开始到最后,都是锚部分,#是⽤来指导浏览器动作的,#后⾯的字符串,都会被浏览器解析为位置标识符。本例中的
锚部分是“name”。锚部分也不是⼀个URL必须的部分。
补充:
http和https使⽤的是完全不同的连接⽅式,⽤的端⼝也不⼀样,前者是80,后者是443。http的连接很简单,是⽆状态的,…
https协议是https(Secure Hypertext Transfer Protocol)安全超⽂本传输协议 ,由SSL安全证书+HTTP协议构建的可进⾏加密传输、⾝份认证的⽹络协议要⽐http协议安全 。
请求消息Request
客户端发送给服务器端的HTTP请求消息由请求⾏(requestline)、请求头部(header)、空⾏和请求数据四个部分组成,如下图所⽰。
GET /index.html HTTP/1.1
Host: www.baidu
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie:BAIDUID=002E605A2EE0AA27D0B7C2295B9D0242:FG=1;BIDUPSID=002E605A2EE0AA27D0B7C2295B9D0242;PSTM=1532306024;BD_UPN=1 2314753;BDORZ=B490B5EBF6F3CD402E515D22BCDA1598;delPer=0;BD_HOME=0;H_PS_PSSID=1465_26911_21121_26350_26925_20719
第⼀部分:请求⾏,⽤来说明请求类型,要访问的资源以及所使⽤的HTTP版本.
请求⾏以⼀个⽅法符号开头,以空格分开,后⾯跟着请求的URI和协议的版本。GET指定请求类型为GET,/index.html为要访问的资源,该⾏的最后⼀部分说明使⽤的是HTTP1.1版本。
第⼆部分:请求头部,紧接着请求⾏(即第⼀⾏)之后的部分,⽤来说明服务器要使⽤的附加信息。
从第⼆⾏起为请求头部,HOST将指出请求的⽬的地。User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中⾃动发送等等。
第三部分:空⾏,请求头部后⾯的空⾏是必须要有的
即使第四部分的请求数据为空,也必须有空⾏。
第四部分:请求数据也叫主体,可以添加任意的其他数据。
这个例⼦的请求数据为空。
POST请求例⼦,使⽤Charles抓取的request:
POST /api/students HTTP/1.1
Host: 192.168.0.130:3000
Connection: keep-alive
Content-Length: 245
Cache-Control: max-age=0
Origin: 192.168.0.130:3000
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: 192.168.0.130:3000/students/create
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
clazz=%E7%81%AB%E8%8A%B112%E6%9C%9F&name=%E9%99%88%E6%A2%A6%E9%BE%99&gender=%E7%94%B7&age=20&hobby=%E7%9D%A1 %E8%A7%89&hobby=%E6%89%93%E8%B1%86%E8%B1%86&tel=138********&address=%E5%8D%97%E9%98%B3&remark=%E6%96%B0%E5%90% 8C%E5%AD%A6 --------》(请求数据)
第⼀部分:请求⾏,第⼀⾏明了是post请求,以及http1.1版本。
第⼆部分:请求头部,第⼆⾏⾄第六⾏。
第三部分:空⾏,第七⾏的空⾏。
第四部分:请求数据,第⼋⾏。
响应消息Response
⼀般情况下,服务器接收到请求后,会对请求进⾏处理,然会返回给客户端⼀个HTTP的响应消息。HTTP响应也由四个部分组成,分别是:状态⾏、响应头、空⾏和响应正⽂。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论