一、HTTP与HTTPS

HTTP:超文本传输协议,是一个客户端服务器端请求和应答的标准,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少,常基于TCP/IP协议传输数据,设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法,包括(HTML 文件, 图片文件, 查询结果等),一个属于应用层的面向对象的协议;

HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTPS:超文本传输安全协议,也就是说是http的安全版本,https由http进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,*是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

二、HTTP与HTTPS的区别

1.HTTPS比HTTP更安全:http协议传输的数据时未经过加密的,也就是说是明文;https在使用http进行通信时,利用了SSL进行了加密传输、身份认证的网络协议(http+SSL),比http更安全。

2.HTTPS使用需要CA证书,大部分都是付费使用的**CA是Certificate Authority的缩写,也叫“证书授权中心”,也是需要第三方公司进行授权的。=

3.端口不一样:HTTP的URL由“http://”起始且默认使用80端口;HTTPS的URL由“https://”起始且默认使用443端口;

三、HTTPS解决的问题:https恰好解决了http三个问题(被监听、被篡改、被伪装),https不是一种新协议,它是由http+SSL的结合体,由之前的http—–>tcp,改为http——>SSL—–>tcp;

1.防监听:因为数据是加密的,hacker监听得到的是密文,看不懂的;

2.防伪装:https在通信过程中,客户端和服务器端都是携带证书的,证书相当于身份证,有证书就是合法,没有就是非法,证书由第三方颁布,很难伪造;

3.防篡改:https对数据进行了摘要处理,即使被篡改也是会被感知的,改了数据也没有用;

四、HTTPS缺点:

1.握手阶段费时:因为SSL的缘故,HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%;

2.SSL证书需要花钱:便宜没好货,好货不便宜;

3.HTTPS连接缓存不如HTTP高效:HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

4.SSL证书通常需要绑定IP:SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

5.有局限性:HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

五、从输入URL(Uniform Resource Locator,统一资源定位器,它是WWW的统一资源定位标志,就是指网络地址)到浏览器http加载页面完成的过程(http工作原理)

1、浏览器构建HTTP Request请求

2、网络传输

3、服务器构建HTTP Response 响应

4、网络传输

5、浏览器渲染页面
1、构建请求

1.1应用层进行DNS解析,将域名解析成IP地址。按照浏览器缓存、系统缓存、路由器缓存、ISP(运营商)DNS缓存、根域名服务器、顶级域名服务器、主域名服务器的顺序,逐步读取缓存,直到拿到IP地址(使用DNS预解析,可以根据浏览器定义的规则,提前解析之后可能会用到的域名,使解析结果缓存到系统缓存中,缩短DNS解析时间,来提高网站的访问速度)。

1.2应用层生成HTTP请求报文,应用层生成针对目标WEB服务器的HTTP请求报文,HTTP请求报文包括起始行、首部和主体部分

1.3传输层建立TCP连接传输层传输协议分为UDP和TCP两种

UDP是无连接的协议,而TCP是可靠的有连接的协议,主要表现在:接收方会对收到的数据进行确认、发送方会重传接收方未确认的数据、接收方会将接收到数据按正确的顺序重新排序,并删除重复的数据、提供了控制拥挤的机制

1.4网络层使用IP协议来选择路线处理来自传输层的segment,将数据段segment装入数据包packet,填充包头,主要就是添加源和目的IP地址,然后发送数据。在数据传输的过程中,IP协议负责选择传送的路线,称为路由功能

1.5数据链路层实现网络相邻结点间可靠的数据通信

1.6物理层传输数据:数据链路层的帧(Frame)转换成二进制形式的比特(Bit)流,从网卡发送出去,再把比特转换成电子、光学或微波信号在网络中传输

**【总结】**6个步骤可总结为:DNS解析URL地址、生成HTTP请求报文、构建TCP连接、使用IP协议选择传输路线、数据链路层保证数据的可靠传输、物理层将数据转换成电子、光学或微波信号进行传输

2、网络传输:从客户机到服务器需要通过许多网络设备, 一般地,包括集线器、交换器、路由器等(如交换机)(是数据链路层设备,比特流到达交换机,交换机除了对比特流进行放大外,还根据源MAC地址进行学习,根据目的MAC地址进行转发。交换机根据数据帧中的目的MAC地址査询MAC地址表,把比特流从对应的端口发送出去)

3、服务器处理及反向传输:服务器接收到比特流,把比特流转换成帧格式,上传到数据链路层,服务器发现数据帧中的目的MAC地址与本网卡的MAC地址相同,服务器拆除数据链路层的封装后,把数据包上传到网络层。服务器的网络层比较数据包中的目的IP地址,发现与本机的IP地址相同,服务器拆除网络层的封装后,把数据分段上传到传输层。传输层对数据分段进行确认、排序、重组,确保数据传输的可靠性。

4、网络传输:数据最后被传到服务器的应用层,接着,通过传输层、网络层、数据链路层的层层封装,最终将响应报文封装成二进制比特流,并转换成其他信号,如电信号到网络中传输。

5、浏览器渲染:客户机接受到二进制比特流之后,把比特流转换成帧格式,上传到数据链路层,客户机发现数据帧中的目的MAC地址与本网卡的MAC地址相同,拆除数据链路层的封装后,把数据包上传到网络层。网络层比较数据包中的目的IP地址,发现与本机的IP地址相同,拆除网络层的封装后,把数据分段上传到传输层。传输层对数据分段进行确认、排序、重组,确保数据传输的可靠性。数据最后被传到应用层

六:HTTPS工作原理
1 客户端发起HTTPS请求:用户在浏览器里输入一个https网址,然后连接到server的443端口。

2 服务端的配置:就是指上述提到的数字证书;

3 传送证书:Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

4 客户端解析证书:客户端会对证书进行判断,验证公钥是否有效,存在问题弹出会警告;若没有问题,生成一个随机值(私钥),然后用证书继续进行加密;

5 传送加密信息:客户端将上加密后的随机值(私钥)提供给服务端,服务端会对其进行解密;

6 服务端解密信息:服务端解密后得到随机值(私钥),然后把内容通过该值进行对称加密。对称加密就是指把要返回的信息和随机值(私钥)混合加密,这样除非知道随机值(私钥),不然无法获取数据。

7 传输加密后的信息:继续将加密后的信息传递给客户端;

8 客户端解密信息:客户端用之前生成的私钥(随机值)解密服务端传过来的信息,于是获取了解密后的内容。

七:TCP/IP协议:TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。

TCP/IP模型

**

7.1应用层:

向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。

7.2传输层:

提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。

7.3网络层负责相邻计算机之间的通信,其功能包括三方面。

a) 处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。

b) 处理输入数据报:首先检查其合法性,然后进行寻径–假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。

c)、处理路径、流控、拥塞等问题。

7.4网络接口层:
这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层

八、TCP/IP总分工

TCP/IP 意味着 TCP 和 IP 在一起协同工作。

TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。

IP 负责计算机之间的通信。

TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。

IP 负责将包发送至接受者

九、IP详解

IP 用于计算机之间的通信。IP 是无连接的通信协议。它不会占用两个正在通信的计算机之间的通信线路。这样,IP 就降低了对网络线路的需求。每条线可以同时满足许多不同的计算机之间的通信需要。通过 IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP 负责将每个包路由至它的目的地。

十、IP地址

每个计算机必须有一个 IP 地址才能够连入因特网。每个 IP 包必须有一个地址才能够发送到另一台计算机。网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,我们常用的是B类地址。需要注意的是**IP地址是网络号+主机号的组合****这非常重要。
**CP/IP 使用 32 个比特来编址。一个计算机字节是 8 比特。所以 TCP/IP 使用了 4 个字节。**一个计算机字节可以包含 256 个不同的值:
00000000、00000001、00000010、00000011、00000100、00000101、00000110、00000111、00001000 … 直到 11111111。 TCP/IP 地址是介于 0 到 255 之间的 4 个数字。

**十一、TCP 详解

使用固定的连接,TCP 用于应用程序之间的通信。当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方**“三次握手**”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。UDP 和 TCP 很相似,但是更简单,同时可靠性低于 TCP。

十二、三次握手:(Three-Way Handshake)即建立TCP连接,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,

(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

注:SYN攻击

在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:

#netstat -nap | grep SYN_RECV

十三、TCP四次挥手

所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示:


由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN(结束标志)。只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。

(1)第一次挥手:Client发送一个FIN(结束标志)。,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

十四、为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。**而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,**因此,己方ACK和FIN一般都会分开发送。

**十五、HTTP状态码**表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常或者是出现的错误,能够根据返回的状态码判断请求是否得到正确的处理很重要。状态码由3位数字和原因短语组成,例如下图所示:
数字中的第一位指定了响应类别,后两位无分类,响应类别有一下5种:

各类别常见状态码:

2xx (3种)

200 OK:表示从客户端发送给服务器的请求被正常处理并返回;

204 No Content:表示客户端发送给客户端的请求得到了成功处理,但在返回的响应报文中不含实体的主体部分(没有资源可以返回);

206 Patial Content:表示客户端进行了范围请求,并且服务器成功执行了这部分的GET请求,响应报文中包含由Content-Range指定范围的实体内容。

3xx (5种)

301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL;

302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL;

301与302的区别:前者是永久移动,后者是临时移动(之后可能还会更改URL)

303 See Other:表示请求的资源被分配了新的URL,应使用GET方法定向获取请求的资源;

302与303的区别:后者明确表示客户端应当采用GET方式获取资源

304 Not Modified:表示客户端发送附带条件(是指采用GET方法的请求报文中包含if-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中任一首部)的请求时,服务器端允许访问资源,但是请求为满足条件的情况下返回改状态码;

307 Temporary Redirect:临时重定向,与303有着相同的含义,307会遵照浏览器标准不会从POST变成GET;(不同浏览器可能会出现不同的情况);

4xx (4种)

400 Bad Request:表示请求报文中存在语法错误;

401 Unauthorized:未经许可,需要通过HTTP认证;

403 Forbidden:服务器拒绝该次访问(访问权限出现问题)

404 Not Found:表示服务器上无法找到请求的资源,除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用;

5xx (2种)

500 Inter Server Error:表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时;

503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求;

HTTP与HTTPS及其工作原理及三次握手、四次挥手、常见状态码相关推荐

  1. go tcp客户端自动重连_阿里面试: HTTP、HTTPS、TCP/IP、三次握手四次挥手过程?(附全网最具深度讲解)

    前言 这段时间面试官都挺忙的,频频出现在博客文章标题,虽然我不是特别想蹭热度,但是实在想不到好的标题了-.-,蹭蹭就蹭蹭 :) 事实上我在阿里面试的时候确实被问到了这个问题,HTTP.HTTPS.TC ...

  2. 计算机网络 HTTP工作机制 TCP三次握手四次挥手 TCP滑动窗口

    1.HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器.从层次的角度看,HTTP是面向事务的应用层协议.它规定了在浏览器之间的请求和响应的格式与规 ...

  3. 【Javaweb】TCP原理(三次握手四次挥手)

    目录 一.TCP协议 二.TCP原理 1,确认应答机制 2,超时重传机制 3,连接管理机制 4,滑动窗口 5,流量控制 6,拥塞控制 7,延迟应答 8,捎带应答 9,粘包问题 一.TCP协议 TCP, ...

  4. 在深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP

    如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...

  5. 再深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP

    转载地址: https://www.zhoulujun.cn/html/theory/ComputerScienceTechnology/network/2015_0708_65.html 如果对网络 ...

  6. HTTP HTTPS WEB的cookie机制 TCP UCP(三次握手四次挥手)

    1.HTTP 与 HTTPS 的区别 理解: 1.HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用.(以前网易官网 ...

  7. ssh协议是osi_TCP/IP协议和三次握手四次挥手

    计算机网络体系结构 在计算机网络的基本概念中,分层次的体系结构是最基本的.计算机网络体系结构的抽象概念较多,在学习时要多思考.这些概念对后面的学习很有帮助. 网络协议是什么? 在计算机网络要做到有条不 ...

  8. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义:       这里 ...

  9. TCP是什么?为什么要三次握手四次挥手? (本文近9千字,建议收藏)

    编者前言: 本文近9千文字,预计阅读时间15分钟,文章内容整理于网络,仅供分享,更多好文请关注公众号:一航代码 公众号阅读链接:TCP是什么?为什么要三次握手四次挥手? (本文近9千字,建议收藏) 一 ...

最新文章

  1. android binder机制之——(创建binder服务)
  2. form 表单 + HTML5(FileReader) +iframe 实现无刷新图片上传+图片预览效果
  3. mybatis返回某一字段_8.mybatis的基本工作流程(2.0)※
  4. 构造函数中的虚拟成员调用
  5. DeepMind激起千层浪的这篇论文,并非无所不能
  6. 互联网1分钟 |1121
  7. opencv中查看mat位图的像素幅度(Cv::matStep)
  8. php是做前端还是后端,在后端准备数据还是在前端操作? - php
  9. nosql非关系型数据库_从Datomic出发,革命性的非NoSQL数据库
  10. java中runnable_Java中Runnable和Thread的区别
  11. Anaconda多环境多版本python配置笔记
  12. python趣味编程100例-达人迷 Python趣味编程10例
  13. 未雨绸缪,数据保护之NBU介质备份
  14. matlab里转置det,matlab矩阵转置命令
  15. Winform面试题
  16. 华为云数据库GaussDB(for openGauss):初次见面,认识一下
  17. a href点击无效_a标签失效的问题
  18. 基于匹配点集对单应性矩阵进行估计
  19. 计算机一级试题上网题收发邮件,计算机等级一级MS Office考题:第一套上网题
  20. 绘制系列(十八)图形篇-Bitmap

热门文章

  1. 微软常用运行库合集下载(vs2008(sp)/vs2010(sp)/vs2012/vs2013/vs2015/vs2017)包含32位/64位
  2. android高仿路口APP,路口app
  3. 招聘| 基因组所Yuwen Liu团队诚聘副研究员和博士后(最高50万年薪)
  4. 基于几何特征的模板匹配原理
  5. Mac专业音频后期制作软件:Davinci Resolve达芬奇17中文版
  6. UDS诊断系列介绍10-28服务
  7. 使用java编程恢复乱码
  8. 物联网NB-IoT技术,智慧燃气领域的潜力股!
  9. [Python开发] 使用python读取图片的EXIF
  10. IntelliJ IDEA 2023.1 最新变化 【附带ChatGPT教程】