zoukankan      html  css  js  c++  java
  • Http协议简介

    http协议是什么

    •超文本传输协议,将超文本从WWW服务器传输到本地浏览器的传送协议 

    •超文本:用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本;

    一种用户界面范式,用以显示文本及与文本之间相关的内容。

     

    http协议工作过程

    HTTP是符合Client/Sever模型的,整个过程,可以简单分为四步: 

    (1)客户端发起请求,与服务器端完成"TCP三次握手";

    (2)客户端向服务器端发出"HTTP请求报文";

    (3)服务器端在完成内部处理后,向客户端发出"HTTP响应报文"; 

    (4)客户端与服务器端完成"TCP四次分手"。

    TCP/IP四层模型

    应用层:应用层为操作系统或网络应用程序提供访问网络服务的接口

    传输层:端到端的数据传输,保证数据可靠传输

    网络层:选择合适的网间路由和交换结点,传输数据包、数据帧的传输

    层次名称

    代表协议

    应用层

    FTP(文件传输协议)

    HTTP(超文本传输协议)

    DNS(域名服务器协议)

    SMTP(简单邮件传输协议)

    传输层

    传输控制协议(TCP)

    用户数据报协议(UDP)

    网络互联层

    IP

    网络接入层

    ARP(地址解析协议)

    TCP/IP
    OSI
    应用层
    应用层
    表示层
    会话层
    主机到主机层(TCP)(又称传输层)
    网络层(IP)(又称互联层)
    网络接口层(又称链路层)
    数据链路层
    物理层

    第一层:物理层(PhysicalLayer),

    规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械 特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率 距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组 操作规程,是指在物理连接的建立、维护、交换信息是,DTE和DCE双放在各电路上的动作系列。在这一层,数据的单位称为比特(bit)。属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

    第二层:数据链路层(DataLinkLayer):

    在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame)。数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。

    第三层是网络层

    在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。如 果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地 址解析协议(ARP)。有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。网络层协议的代表包括:IP、IPX、RIP、OSPF等。

    第 四层是处理信息的传输层

    第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。传输层协议的代表包括:TCP、UDP、SPX等。

    第五层是会话层

    这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。

    第六层是表示层

    这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。

    第七层应用层

    应用层为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

    TCP建立连接的过程(三次握手)

     

    男:  周末我们在人民公园见面吧!收到请回复!

    女:  好的!收到请回复!

    男:  好,我在那里等你!

    思考:1.为什么是三次,两次不可以吗

             在第一次通信过程中,A向B发送信息之后,B收到信息后可以确认自己的收信能力和A的发信能力没有问题。

                          在第二次通信中,B向A发送信息之后,A可以确认自己的发信能力和B的收信能力没有问题,但是B不知道自己的发信能力到底如何,所以就需要第三次通信。

                          在第三次通信中,A向B发送信息之后,B就可以确认自己的发信能力没有问题。

               2.断开连接的过程是怎么样的?

     

    四次挥手:

    1、客户端发起请求,请求断开链接。FIN=1,seq=u。u是之前传送过来的最后一个字节的序号+1。

    FIN:用来释放一个链接,当FIN=1的时候,表明此报文的发送方已经完成了数据的发送,没有新的数据要传送,并要求释放链接。

    客户端进入FIN-WAIT-1状态,等着服务器返回确认;

    2、服务器收到客户端的请求断开链接的报文之后,返回确认信息。ACK=1,seq=v,ack=u+1。

    服务器进入CLOSE-WAIT状态。(等待关闭)

    这个时候,客户端不能给服务器发送信息报文,只能接收。但是服务器要是还有信息要传给服务器,仍然能传送。

    3、当服务器也没有了可以传的信息之后,给客户端发送请求结束的报文。FIN=1,ACK=1,

    ack=u+1,seq=w。

    这个时候的状态:服务器进入LAST-ACK状态。

    4、客户端接收到FIN=1的报文之后,返回确认报文,ACK=1,seq=u+1,ack=w+1。

    发送完毕之后,客户端进入等待状态,等待两个时间周期。关闭。

    状态变化

    • FIN_WAIT_1: 这个状态要好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。(主动方)

    • FIN_WAIT_2:上面已经详细解释了这种状态,实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你(ACK信息),稍后再关闭连接。(主动方)

    • CLOSE_WAIT:这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以 close这个SOCKET,发送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。(被动方)

    • LAST_ACK: 这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状态了。(被动方)

    • TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果FINWAIT1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。(主动方)

    • CLOSED: 表示连接中断。

    HTTPS是什么

    HTTPS协议是由 SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,简单来说它是HTTP的安全版

    HTTPS解决的问题:

    1.信任主机的问题 

    2.通讯过程中的数据的泄密和被窜改 

    HTTPS的工作原理:

     

    HTTP与HTTPS的区别

    1. HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
    2. HTTP 标准端口是80 ,而HTTPS 的标准端口是443 
    3. https协议需要到CA机构申请证书,一般免费证书很少
    4. HTTP是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议

    扩展1—DNS是啥

    •域名系统(Domain Name System)用来把便于人们使用的机器名字转换成为IP地址

    域名结构

     

    扩展2—DNS解析过程

    在浏览器的地址栏中输入 www.jiedaibao.com,都会发生什么? 

    •1.浏览器缓存:浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在) 

    •2.系统缓存:检查用户计算机系统Hosts文件 

    •3.路由器缓存 

    •4. ISP(互联网服务提供商)缓存:比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找 

    •5.根域名服务器->顶级域名服务器->主域名服务器 

    •6.保存结果至缓存

    扩展3—GET/POST区别

     

    GET

    POST

    作用

    用于信息获取,GET用于信息获取

    根据HTTP规范,POST表示可能改变服务器上的资源的请求

    后退按钮/刷新

    无害

    数据会被重新提交

    书签

    可收藏为书签

    不可收藏为书签

    对数据长度的限制

    GET 方法向   URL 添加数据;URL   的长度是受限制的(一般来说最大长度是 2048   个字符)

    一般来说100KB

    对数据类型的限制

    只允许 ASCII   字符

    没有限制

    安全性

    GET 的安全性较差,因为所发送的数据是   URL 的一部分,对所有人都是可见的

    数据不会显示在 URL   中,对用户不可见

    扩展4—还能学什么

    •1.TCP/UDP区别与联系 

    TCP:传输控制协议,安全可靠,面向连接,保证数据无差错传输;
    UDP:用户数据报协议,不安全不可靠,发送数据不会有回复,可靠性由上层协议保证。

    •2.Socket/ServerSocket 

    •3.加密算法(DES、AES、RSA等) 

    •4.HTTP报文(Accept、User-Agent、Cookie等)

  • 相关阅读:
    JavaWeb项目自动部署,持续集成
    hbase系列
    传输视频的带宽如何计算?传输4K视频需要多少带宽?
    TSINGSEE青犀视频通过Webrtc编译android版本找不到gzip模块如何处理?
    TSINGSEE青犀视频webrtc相关内容编译如何在c++端编码出H264?
    视频组网/网络穿透工具EasyNTS如何永久删除其中某个设备?
    音视频流媒体平台的开发,开源EasyDarwin为什么如此受欢迎?
    基于音视频的云会议为什么会迎来发展的大爆发?
    EasyRTC的Web开发过程中如何创建新的空分支?
    C# 会话,进程,线程,线程安全
  • 原文地址:https://www.cnblogs.com/wyunuo/p/10497273.html
Copyright © 2011-2022 走看看