HTTP基础知识

  1. http,https默认端口都为多少,区别?

  2. http协议的组成

  3. OSI七层模型

  4. url 和 uri

  5. http1.0和http1.1,http2.0的区别?

  6. get/post方法区别?

  7. cookie和session区别?

  8. 打开浏览器,在地址栏中输入URL,然后就看到网页,原理是什么?

  9. http协议下,为什么请求和响应能做到准确无误,一一对应

  10. DNS劫持

  11. SSL和TLS

HTTP

超文本传输协议,一种运用广泛的网络协议,所有的www文件都必须遵守这个标准

http通常承载于 tcp协议 之上,有时也承载于 TLS 和 SSL 协议层之上,这就是 HTTPS

HTTP默认端口 80

HTTPS默认端口 443

HTTP协议的特点:

  1. 支持客户/服务器模式

http是一种客户请求,服务器应答式的应用层传输协议

  1. 简单快速

客户端向服务器发送请求数据时,只需传送方法和路径,请求方法常用的有 GET, HEAD, PUT

  1. 灵活性

http允许传输任意类型的数据对象,正在传输的类型由 Content-Type 加以标记

  1. 无连接,无状态

每次http请求都是独立的,每次只处理一个请求,服务器对客户端的请求作出响应后,马上断开连接,任意两个请求之间没有什么必然的联系,但实际过程中并不是这样的,会引入 Cookie 和 Session 机制来关联请求

HTTP请求由请求行,请求头,请求体三部分组成:

  1. 请求行

请求行包含三部分:

  • method

  • uri

  • http版本,提示信息

image.png

1.1 method

1.2 URI 统一资源标示符

URL 统一资源定位符

image.png

URI包含 URN 和 URL,URN作用相当于 一个人的名字,URL 就像一个人的地址,URN确定了身份,URL 提供了找到他的方式

让URI成为 URL的 就是 “访问机制” “网络位置”

OSI七层模型

image.png
image.png
image.png
image.png

应用层:用来生成报文

传输层:用来切割报文的

网络层:决定发往哪里去,按什么顺序发,网络层可以看成是个指路牌,即根据报文在路由表里寻找目标服务器的地址。

链路层:链路层是用来检测、确认报文数据,然后就是作为接口,对接服务器或硬件的。

HTTP1.0,1.1,2.0之间的区别:

http1.0 和 http1.1 区别:

  • 缓存处理

  • 带宽优化及网络连接的使用

  • Host头处理

  • 长连接 keep live

  • 错误通知的管理

1.1 缓存处理

http1.0主要持有它的头部当中的if-modify-since这个参数来作为缓存判断的标准,而http1.1则引入了更多的缓存策略。比如说e_ tag、if-none_match, e_tag是配合in_none_match来使用。就是说http1.0和http1.1主要在缓存策略上有很大的不同

1.2 带宽优化及网络连接使用

断点续传

在http1.0存在着一些浪费带宽的情况,比如说客户端只请求服务端的一小部分,但是服务端却把所有的东西都返回回来了,但是又不支持断点续传功能,而在http 1.1中引入了一个range范围的头部区域,它允许只请求网络资源的一部分。这样就方便了开发者的选择。

1.3 Host头处理

在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)

一个ip地址可以分配多个虚拟主机,最终请求都到这一个ip,需要区分是哪个域名请求过来的,必须有Host头处理

1.4 长连接

HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

1.5 错误通知

在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

http1.1 和 http 2.0 区别:

  • 新的传输格式:2.0采用二进制格式,1.0基于文本格式

  • 多路复用:连接共享,不同request可以使用同一个连接传输(最后根据每个request上id号组合成正常请求)

  • header压缩:由于1.X中header带有大量的信息,并且得重复传输,2.0使用encoder来减少需要传输的hearder大小

  • 服务端推送:同google的SPDUY(1.0的一种升级)一样

GET和POST区别?

image.png

https://blog.fundebug.com/2019/02/22/compare-http-method-get-and-post/

https://www.oschina.net/news/77354/http-get-post-different

当我们打开浏览器输入网址到页面展示到我们面前,究竟发生了什么呢?

https://zhuanlan.zhihu.com/p/88940868

HTTP协议下,请求和响应这么做到一一对应的

互联网通信都是通过套接字来进行通信的,套接字,是支持TCP/IP网络通信的基本操作单元,可以看作不同主机之间进程进行相互通信的端点,简单说就是通信双方的一种约定,用套接字相关函数来完成相关通信。

简单可以举例为: 套接字 = ip address + tcp/udp + 端口号

socket通信靠四元组进行通信:

源ip 源端口 目的ip 目的端口

这四个值在一起起到了唯一定义一条连接,两个不同的tcp连接不能拥有4个完全相同的地址组件值

有的连接共享了相同的目的端口号,有点连接使用了相同的源ip地址,有的使用了相同的目的ip地址,但没有两个不同的tcp连接4个值完全相同

一. HTTP通信传输

通信过程

image.png

客户端输入URL回车,DNS解析域名得到服务器的IP地址,服务器在80端口监听客户端请求,端口通过TCP/IP协议(可以通过Socket实现)建立连接。HTTP属于TCP/IP模型中的运用层协议,所以通信的过程其实是对应数据的入栈和出栈。

image.png

报文从应用层传送到运输层,运输层通过TCP三次握手和服务器建立连接,四次挥手释放连接。

https://zhuanlan.zhihu.com/p/74466717

三次握手

image.png

为什么需要三次握手呢?

为了防止已失效的连接请求报文又发送到服务端,因而产生错误

比如:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段,但是server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求,于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了,由于client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据,但server却以为新的运输连接已经建立,并一直等待client发来数据。所以没有采用“三次握手”,这种情况下server的很多资源就白白浪费掉了。

四次挥手

[图片上传中...(image-218763-1574231629256-1)]

为什么需要四次挥手呢?

为什么需要四次挥手呢?TCP是全双工模式,当client发出FIN报文段时,只是表示client已经没有数据要发送了,client告诉server,它的数据已经全部发送完毕了;但是,这个时候client还是可以接受来server的数据;当server返回ACK报文段时,表示它已经知道client没有数据发送了,但是server还是可以发送数据到client的;当server也发送了FIN报文段时,这个时候就表示server也没有数据要发送了,就会告诉client,我也没有数据要发送了,如果收到client确认报文段,之后彼此就会愉快的中断这次TCP连接。

什么是全双工呢?

https://blog.csdn.net/yimingsilence/article/details/72854516

二. HTTPS实现原理

image.png

  • client向server发送请求https://baidu.com,然后连接到server的443端口,发送的信息主要是随机值1和客户端支持的加密算法。

  • server接收到信息之后给予client响应握手信息,包括随机值2和匹配好的协商加密算法,这个加密算法一定是client发送给server加密算法的子集。

  • 随即server给client发送第二个响应报文是数字证书。服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这套证书其实就是一对公钥和私钥。传送证书,这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名,服务端的域名信息等内容。

  • 客户端解析证书,这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值(预主秘钥)。

  • 客户端认证证书通过之后,接下来是通过随机值1、随机值2和预主秘钥组装会话秘钥。然后通过证书的公钥加密会话秘钥。

  • 传送加密信息,这部分传送的是用证书加密后的会话秘钥,目的就是让服务端使用秘钥解密得到随机值1、随机值2和预主秘钥。

  • 服务端解密得到随机值1、随机值2和预主秘钥,然后组装会话秘钥,跟客户端会话秘钥相同。

  • 客户端通过会话秘钥加密一条消息发送给服务端,主要验证服务端是否正常接受客户端加密的消息。

  • 同样服务端也会通过会话秘钥加密一条消息回传给客户端,如果客户端能够正常接受的话表明SSL层连接建立完成了。

HTTP 状态码

image.png
image.png
image.png
image.png

具体应用

image.png

参考文献(https://juejin.im/post/5dc63c5bf265da4d17138c2d?utm_source=gold_browser_extension

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335