0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

http和https的区别

科技绿洲 来源:Linux开发架构之路 作者:Linux开发架构之路 2023-11-10 16:42 次阅读

1.1 http协议格式是什么

图片

  • 请求报文格式:请求行、请求头、空一行、请求体

请求行包括:请求方法、统一资源定位符(URL)、http协议及版本

  • 响应报文格式:状态行、响应头、空一行、响应体

状态行包括:协议及版本、状态码、状态码解释

1.2 http和https的区别

http:由于http是明文传输,所以其安全性低,易受攻击,无法确认对方的身份,也无法确保数据的完整性;http协议默认端口号是80端口;它的优点是简单快速,使用很灵活;http服务器的程序规模小所以通信速度很快;与https相比,http没有额外的费用。

https:由于https使用ssh加密传输协议,信息是密文,所以它的安全性高,可以认证双方的身份,防止信息被截取篡改;https协议默认端口号是443端口;它会加重服务器负担,需要资源来支撑,降低用户的访问速度。

1.3 http常见状态码

图片

图片

1.4 cookie和session的区别

1、数据存放位置不同:cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、安全程度不同:cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

3、性能使用程度不同:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

4、数据存储大小不同:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。

5、会话机制不同:session会话机制:session会话机制是一种服务器端机制,它使用类似于哈希表(可能还有哈希表)的结构来保存信息。cookies会话机制:cookie是服务器存储在本地计算机上的小块文本,并随每个请求发送到同一服务器。

1.5 get和post的区别

他们本质都是TCP连接,并无区别,但是由于http的规定以及浏览器和服务器的限制,导致他们在应用过程中可能有所不同

1、get方法的特点

①请求数据会附在URL之后(放在请求行中,以 ?分割URL和传输数据,多个参数用 & 连接)

②get是会被浏览器主动缓存的,如果下一次传输的数据相同,那么就会返回缓存中的内容,可以更快的展示数据

③get方法的UR一般都有长度限制,但是需要注意的是http协议中并未规定get请求的长度。这个长度限制主要是由浏览器和web服务器决定的,并且各个浏览器对长度限制各不相同

④get方法只产生一个TCP数据包,浏览器会把请求头和请求数据一并发送出去,服务器响应200 ok(返回数据)

2、post方法的特点

①根据http规范,post可能改变服务器上的资源的请求(点赞就是post请求),因为有可能修改服务器上的资源,所以不符合安全性和幂等性

②因为post方法是放在请求数据的,所以它的请求信息是没有长度限制的

③post方法会产生两个TCP数据包,浏览器会先将请求头发送给服务器,待服务器返回100 continue,浏览器再发送请求数据,服务器响应 200 ok(返回数据),这个看起来get比post快一些,但是实际上,在网络状况良好的情况下,他们的传输速度基本相同。

2. 传输层

2.1 讲讲三次握手

图片

1、建立客户端向服务端的连接:发送客户端的请求连接数据包SYN到服务端

2、响应客户端的连接并建立服务端的连接:服务端发送响应客户端连接的数据包ACK和服务端的请求连接数据包SYN到客户端

3、响应服务端的连接:客户端发送响应服务端连接的数据包ACK到服务端

服务端新建套接字,绑定地址信息后开始监听,进入LISTEN状态。客户端新建套接字绑定地址信息后调用connect,发送连接请求SYN,并进入SYN_SENT状态,等待服务器的确认。服务端一旦监听到连接请求,就会将连接放入内核等待队列中,并向客户端发送SYN和确认报文段ACK,进入SYN_RECD状态。客户端收到SYN+ACK报文后向服务端发送确认报文段ACK,并进入ESTABLISHED状态,开始读写数据。服务端一旦收到客户端的确认报文,就进入ESTABLISHED状态,就可以进行读写数据了

2.1.1 为什么是三次握手,而不是两次或四次

两次不安全,四次没必要

tcp通信需要确保双方都具有数据收发的能力,得到ACK响应则认为对方具有数据收发的能力,因此双方都要发送SYN确保对方具有通信的能力。第一次握手是客户端发送SYN,服务端接收,服务端得出客户端的发送能力和服务端的接收能力都正常;第二次握手是服务端发送SYN+ACK,客户端接收,客户端得出客户端发送接收能力正常,服务端发送接收能力也都正常,但是此时服务器并不能确认客户端的接收能力是否正常;第三次握手客户端发送ACK,服务器接收,服务端才能得出客户端发送接收能力正常,服务端自己发送接收能力也都正常。

2.2 讲讲四次挥手

图片

1、客户端向服务端发送断开连接请求FIN

2、服务端响应客户端的断开连接请求,发送ACK响应包给客户端

3、服务端向客户端发送断开连接请求FIN

4、客户端响应服务端的断开连接请求,发送ACK响应给客户端

客户端主动调用close时,向服务端发送结束报文段FIN报,同时进入FIN_WAIT1状态; 服务器会收到结束报文段FIN报,服务器返回确认报文段ACK并进入CLOSE_WAIT状态,此时如果服务端有数据要发送的话,客户端依然需要接收。客户端收到服务器对结束报文段的确认,就会进入到FIN_WAIT2状态,开始等待服务器的结束报文段; 服务器端数据发送完毕后,当服务器真正调用close关闭连接时,会向客户端发送结束报文段FIN包,此时服务器进入LAST_ACK状态,等待最后一个ACK的带来; 客户端收到服务器发来的结束报文段, 进入TIME_WAIT, 并发出送确认报文段ACK;服务器收到了对结束报文段确认的ACK,进入CLOSED状态,断开连接。而客户端要等待2MSL的时间,才会进入到CLOSED状态

2.2.1 为什么握手是三次,而挥手需要四次呢

  • 第二步属于系统自动响应数据包
  • 第三步是程序手动调用close()方法发送关闭连接的请求数据包

其实在TCP握手的时候,接收端将SYN包和ACK确认包合并到一个包中发送的,所以减少了一次包的发送。对于四次挥手,由于TCP是全双工通信,主动关闭方发送FIN请求不代表完全断开连接,只能表示主动关闭方不再发送数据了。而接收方可能还要发送数据,就不能立即关闭服务器端到客户端的数据通道,所以就不能将服务端的FIN包和对客户端的ACK包合并发送,只能先确认ACK,等服务器无需发送数据时在发送FIN包,所以四次挥手时需要四次数据包的交互

2.2.2 一台主机上出现大量的TIME_WAIT是什么原因?应该如何处理?

TIME_WAIT是主动关闭方出现的,一台主机出现大量的TIME_WAIT证明这台主机上发起大量的主动关闭连接。常见于一些爬虫服务器。这时候我们应该调整TIME_WAIT的等待时间,或者开启套接字地址重用选项

2.2.3 一台主机上出现大量的CLOSE_WAIT是什么原因?应该如何处理?

CLOSE_WAIT是被动关闭方收到FIN请求进行回复之后的状态,等待上层程序进一步处理,若出现大量CLOSE_WAIT,有可能是被动关闭方主机程序中忘了最后一步断开连接后调用close释放资源。这是一个 BUG,只需要加上对应的 close 即可解决问题

2.3 TCP是如何保证可靠性的

可靠性和提高性能可参考此链接!!!

确认应答、超时重传、连接管理、流量控制、拥塞控制

2.4 TCP是如何提高性能的

滑动窗口、延迟应答、捎带应答

2.5 TCP和UDP的区别

TCP是可靠,稳定的,TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认应答、超时重传、连接管理、流量管理、拥塞控制机制,在数据传完后,还会四次挥手断开连接用来节约系统资源。 但是它相对UDP较慢,效率低,占用系统资源高,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,每个连接都会占用系统的CPU、内存等硬件资源。

UDP没有TCP的确认应答、超时重传、连接管理、流量管理、拥塞控制等机制,是一个无状态的传输协议,所以它在传递数据时非常快。但是UDP不可靠、不稳定,因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

总的来说

TCP是面向连接的,UDP无连接

TCP是可靠的,UDP不可靠

TCP只支持对点的通信;UDP支持一对一,一对多,多对一,多对多通信

TCP是面向字节流的;UDP是面向数据报的

TCP首部开销大,20个字节;UDP只有8个字节

TCP可以保证传输的顺序,UDP不可以保证

3. 其他问题

3.1 浏览器输入URL后发生了什么

1、首先,在浏览器地址栏中输入url,先解析url,检测url地址是否合法

2、浏览器先查看浏览器缓存——系统缓存——路由器缓存,如果缓存中有,直接在屏幕上显示内容,如果没有,到第三步

浏览器缓存:浏览器会记录DNS一段时间,因此只有第一个地方解析DNS请求

操作系统缓存:如果在浏览器中不包含这个记录,则会使用系统调用操作系统,获取操作系统记录(保存最近的DNS查询缓存)

路由器缓存:如果上述两个步骤均不能获取DNS记录,继续搜索路由器缓存

3、在发送http请求前,需要域名解析(DNS解析),获取相应的IP地址

4、浏览器向服务器发起TCP连接,与浏览器建立三次握手

5、握手成功后,浏览器向服务器发送http请求,请求数据包

6、服务器处理收到的请求,将数据返回至浏览器

7、四次挥手释放TCP连接

8、浏览器收到http响应

9、浏览器解析响应,如果响应可以缓存,则存入缓存

10、浏览器发送请求获取嵌入在HTML的资源(对于未知类型,会弹出对话框)

11、浏览器发送异步请求

12、页面渲染全部结束

3.2 电脑网络不通如何解决

(1)排除接触故障

查看网线是否连接正常。如果网络连接图标上显示“红叉”,则说明网络连接不正常。可检查主机网卡口上的网线、交换器(路由器)上网线是否正常连接

(2)使用ipconfig查看计算机的上网参数

①单击“开始|所有程序|附件|命令提示符“,打开命令提示符窗口

②输入ipconfig,按Enter确认,可以看到机器的配置信息,输入ipconfig/all,可以看到IP地址和网卡物理地址等相关网络详细信息。

(3)使用ping命令测试网络的连通性

在命令提示符窗口中输入"ping 127.0.0.1",数据显示本机分别发送和接受了4个数据包,丢包率为零,可以判断本机网络协议工作正常,如显示”请求超时“,则表明本机网卡的安装或TCP/IP协议有问题,接下来就应该检查网卡和TCP/IP协议,可以通过重新安装该协议来解决。安装方法:右击“本地连接”——属性——安装——协议,选择TCP/IP协议确定安装。

(4)ping本机IP

如果ping 127.0.0.1 正常,则可以“ping 本机IP”来判断本机的网卡是否正常工作。如不能ping通,说明本机的网卡驱动程序不正确,或者网卡与网线之间连接有故障,也有可能是本地的路由表面收到了破坏,此时应检查本机网卡的状态是否为已连接,网络参数是否设置正确,如果正确可是不能ping通,就应该重新安装网卡驱动程序。丢失率为零,可以判断网卡安装配置没有问题,工作正常。

(5)ping网关IP

网关地址能被ping通的话,表明本机网络连接已经正常,如果命令不成功,可能是网关设备自身存在问题,也可能是本机上网参数设置有误,检查网络参数。如果ping 网关IP正常,可网页却无法打开,同时QQ可以正确登录。则一般是DNS填写不正确,请联系运行商询问DNS地址,也可询问邻居他们是怎么设置的,一个地区的同一运行商所用的DNS都是一样的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6792

    浏览量

    88723
  • 服务器
    +关注

    关注

    12

    文章

    8931

    浏览量

    85048
  • HTTP
    +关注

    关注

    0

    文章

    499

    浏览量

    30970
  • 端口
    +关注

    关注

    4

    文章

    942

    浏览量

    31976
收藏 人收藏

    评论

    相关推荐

    如何移植http/https server到softAP上?

    有没有什么 思路,现在要把 worksapceesp-idfcomponentsesp_http_server worksapceesp-idfcomponentsesp_https
    发表于 06-19 06:14

    什么是Http协议?

    区别****11、HttpHttps优缺点?****12、Http优化****13、Http协议有那些特征?**
    发表于 12-22 06:27

    http和tcp/ip、http https之间的关系和区别

    http和tcp/ip、httphttps之间的关系和区别
    的头像 发表于 01-10 14:30 7424次阅读

    一文读懂HttpHttps区别

    http请求存在着一个很严重的问题,http协议传输的是明文,如果中间有个黑客拦截到该请求,就拦截到了我们的数据,就能将我们的用户名和密码看得一清二楚,这样隐私的数据就非常容易泄露出去。
    发表于 05-17 11:19 2093次阅读
    一文读懂<b class='flag-5'>Http</b>和<b class='flag-5'>Https</b>的<b class='flag-5'>区别</b>

    Linux Kernel将HTTP链接切换到 HTTPS

    更改方式并不是手动寻找内核树中的 HTTP 链接,而是很大程度上通过脚本自动完成,这些脚本通过查找 SVG 等文档中是否存在 HTTP 链接,随后检查目标 URL 的服务器是否提供了相对应的 HTTPS 链接
    的头像 发表于 08-14 16:20 1804次阅读
    Linux Kernel将<b class='flag-5'>HTTP</b>链接切换到 <b class='flag-5'>HTTPS</b>

    探讨HTTP为什么要升级 HTTPS协议

    之前说了 HTTP 协议的各种问题,但是它还是陪伴着互联网、陪伴着我们走过了将近二十年的风风雨雨。现在有很多新的协议尝试去取代它,来解决性能、效率等问题,但它还还能靠着多年的情分活的滋润。然而
    的头像 发表于 10-22 15:31 3498次阅读
    探讨<b class='flag-5'>HTTP</b>为什么要升级 <b class='flag-5'>HTTPS</b>协议

    网站的HTPP与HTTPS区别在哪?

    当用户打开淘宝、百度、知乎等各大平台时,网址前面会出现一个https://,将它修改为http://时,网址可以正常打开,并且自动加上了一个“s”。而当我们访问一些个人博客时,网址前面则显示http://,将
    的头像 发表于 02-08 15:56 5425次阅读

    手把手教你:http怎么直接跳转到https

    很多用户在服务器上面配置好了https之后,打开网站发现网址依然还是http开头的,而想要https开头的还需要专门在网址部分输入https。那有没有办法打开网址之后让他自动跳转到
    的头像 发表于 07-07 17:03 2.2w次阅读
    手把手教你:<b class='flag-5'>http</b>怎么直接跳转到<b class='flag-5'>https</b>

    HTTP是什么,HTTPS的优点是什么

    窃取和篡改。 HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因
    的头像 发表于 05-10 09:55 2098次阅读

    httphttps有什么区别,为什么https会取代http

    大家都知道当前https的使用更为普遍,为什么https会取代http,其中的原因恒讯科技为大家整理在本文,共有11点希望可以帮助大家更了解网站数据安全。 1、传输方式 http使用的
    的头像 发表于 05-11 16:02 1907次阅读

    httphttps区别,为什么https会取代http

    大家都知道当前https的使用更为普遍,为什么https会取代http,其中的原因恒讯科技为大家整理在本文,共有11点希望可以帮助大家更了解网站数据安全。
    的头像 发表于 09-14 13:26 1654次阅读

    HTTPS如何保证数据安全?

    虽然现在许多网站都会用到HTTPHTTPS,但是大家极力倡导使用的却是更为安全的HTTPS,今天我们就来了解一下HTTPS是如何保证数据传输的安全性的。
    的头像 发表于 10-28 09:47 868次阅读

    TCP是如何实现可靠传输 HTTPHTTPS区别

    数据偏移(占4字位):数据部分的起始位置离报文段起始位置的距离,就是报文首部的长度,单位是4字节,所以4位能表示最大值是十进制的15,就是15 x 4字节 = 60字节,TCP报文首部最大长度为60字节
    发表于 11-21 21:38 801次阅读

    HTTPHTTPS区别 HTTP协议请求类型

    HTTP协议在传输过程中数据都是明文状态,安全性较差。HTTPS协议使用SSL/TLS协议进行数据传输,保证了数据传输的安全性,可以防止敏感信息被窃取和篡改。
    的头像 发表于 06-26 17:44 970次阅读

    什么是HTTP?什么是HTTPSHTTPHTTPS区别在哪?

    每天都在上网,在搜索东西的时候,你有发现网址有什么不同吗?本文就来谈谈HTTPHTTPS有什么不同。
    的头像 发表于 08-27 09:15 3348次阅读
    什么是<b class='flag-5'>HTTP</b>?什么是<b class='flag-5'>HTTPS</b>?<b class='flag-5'>HTTP</b>与<b class='flag-5'>HTTPS</b>的<b class='flag-5'>区别</b>在哪?