【计算机网络】HTTP基础

HTTP又称为超文本传输协议,是一个请求响应协议,用于从万维网服务器传输超文本到本地浏览器,它可以使浏览器更加高效,减少网络传输。

当我们在浏览器地址栏上输入要访问的URL后,浏览器会分析出URL上面的域名,然后通过DNS服务器查询出域名映射的IP地址,浏览器根据查询到的IP地址与Web服务器进行通信,而通信的协议就是HTTP协议。

在这里插入图片描述

问题1、HTTP 1.0 / 1.1 / 2.0 的版本区别

1)HTTP 1.0

规定了请求头、请求尾、响应头、相应尾

  • HTTP/1.0中浏览器与服务器只保持短暂的连接(短连接),连接无法复用。也就是说每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。

  • TCP连接的建立需要三次握手,是很耗费时间的一个过程。所以,HTTP/1.0版本的性能比较差。

  • 补充:HTTP1.0 其实也可以强制开启长链接,例如接受Connection: keep-alive 这个字段

2)HTTP 1.1

HTTP 1.1在HTTP 1.0的基础上做了2点改进

  • 第一个改进是默认启用长连接,即TCP连接默认不关闭,可以被多个请求复用
  • 第二个改进是引入了管道(pipelining),即在同一个TCP连接里面,客户端可以同时发送多个请求。只要第一个请求发出,不必等其回来就可以发第二个请求,这样就进一步改进了HTTP协议的效率。

有了长连接和管道,HTTP的效率得到了极大的提升。但是服务端还是顺序执行的,效率还有提升的空间。

3)HTTP 2.0

二进制分帧,多路复用,Header压缩,服务器推送

  • 二进制分帧将请求和响应数据分割为更小的帧,并且它们采用二进制编码。例如,客户端收到了前一部分,先放在缓冲池里,之后收到了另外一部分,在组合起来,最后在把完整的信息推送给用户。
    同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流。每个数据流都以消息的形式发送,而消息又由一个或多个帧组成。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。
  • 多路复用一个连接里面,客户端和服务器都可以同时发送多个请求或回应。一个TCP中多个http请求是并行的
  • Header压缩:http/2使用encoder来减少需要传输的header大小,通讯双方各自缓存一份头部字段表,既避免了重复header的传输,又减小了需要传输的大小。
  • 服务器推送:服务器可以对一个客户端请求发送多个响应,服务器向客户端推送资源无需客户端明确地请求。并且,服务端推送能把客户端所需要的资源伴随着index.html一起发送到客户端,省去了客户端重复请求的步骤。

问题2、短连接和长连接

短连接:例如普通的web请求,在三次握手之后建立连接,发送数据包并得到服务器返回的结果之后,通过客户端和服务端的四次握手进行关闭断开。

长连接:区别于短连接,由于三次握手链接及四次握手断开,在请求频繁的情况下,连接请求和断开请求的开销较大,影响效率。采用长连接方式,执行三次握手链接后,不断开连接,保持客户端和服务端通信,直到服务器超时自动断开连接,或者客户端主动断开连接。

适用场景
短连接:适用于网页浏览等数据刷新频度较低的场景。

长连接:适用于客户端和服务端通信频繁的场景,例如聊天室,实时游戏等。

问题3、HTTP的状态码及其含义

1xx——信息类状态码;
2xx——表示成功处理了请求的状态码
3xx——重定向,表示要完成请求,需要进一步操作。通常这些状态代码用来重定向。
4xx——客户端错误,这些状态码表示请求可能出错,妨碍了服务器的处理
5xx——服务器错误,这些状态码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求的错误

  • 100 接受的请求正在处理

  • 200 服务器已成功处理了请求

  • 301 永久性重定向,表示资源已被分配了新的 URL
    302 临时性重定向,表示资源临时被分配了新的 URL
    303 表示资源存在另一个URL,用GET方法获取资源
    304 (未修改)自从上次请求后,请求网页未修改过。服务器返回此响应时,不会返回网页内容

  • 400(错误请求)服务器不理解请求的语法

  • 401表示发送的请求需要有通过HTTP认证的认证信息

  • 403(禁止)服务器拒绝请求

  • 404(未找到)服务器找不到请求网页 //请求资源不存在,输入了错误的URL

  • 500 服务器端错误

  • 503 服务器繁忙

问题4、HTTP状态码301和302的区别,都有哪些用途?

  • 301重定向(301 Move Permanently),指页面永久性转移,表示为资源或页面永久性地转移到了另一个位置。301重定向是一种非常重要的”自动转向“技术,网址重定向最为可行的一种方法。
  • 302重定向(302 Move Temporarily),指页面暂时性转移,表示资源或页面暂时转移到另一个位置,常被用作网址劫持,容易导致网站降权,严重时网站会被封掉,不推荐使用。

问题5、HTTP与HTTPS的区别?

http是超文本传输协议,HTTPS协议是(加密传输协议)SSL+HTTP协议

区别:

  • http是超文本传输协议,信息是明文传输;https是由SSL加密传输协议+http协议组成,ssl依靠证书来验证身份。
  • https协议需要到申请证书,一般免费证书较少,因而需要一定费用
  • http和https使用的是完全不同的连接方式,用的端口号也不一样,http是80,后者是https。
  • http是明文传输,几乎没有安全性;HTTPS协议是由SSL+HTTP协议构建的,可进行加密传输、身份认证的网络协议,比http协议安全。

问题6、HTTP的方法有哪些?

  • GET获取资源。用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器

  • POST传输实体主体。用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。

  • PUT上传文件,由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。

  • HEAD获取报文首部,与GET方法类似,只是不返回报文实体主体,一般用于验证URI是否有效。

  • DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。

  • OPTIONS:查询相应URI支持的HTTP方法。

问题7、GET 和 POST 的区别?

GET 和 POST 是最常见的Http协议请求方式,GET 用于获取资源,而 POST 用于传输实体主体。可以看作,GET 是查(只读), POST 是改。

  • GET参数放在url里面,POST放在请求体中。所以说,GET请求在URL中传送的参数是有长度限制的,而POST没有。
  • GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
  • GET请求只支持url编码,而POST支持多种编码方式。
  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息

问题8、 HTTPS 的加密与认证过程

1、HTTPS的加密

  • 客户端在浏览器中输入一个https网址,然后连接到server的443端口

  • 采用https协议的server必须有一套数字证书(一套公钥和密钥)。首先server将证书(公钥)传送到客户端。客户端解析证书,验证成功,则生成一个随机数(私钥),并用证书将该随机数加密后传回server

  • server用密钥解密后,获得这个随机值,然后将要传输的信息和私钥通过某种算法混合在一起(加密)传到客户端 客户端用之前的生成的随机数(私钥)解密服务器端传来的信息

2、HTTPS 的认证
首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥。

用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证证书签名的合法性。签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。

问题9、 Cookie和Session的区别

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

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

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

由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session。服务端为每个用户都会生成一个Session对象,通过SessionID来区分来自于哪个用户

问题10、浏览器输入url后经历的过程

1、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。
2、否则,在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。
3、浏览器会向服务器发起tcp连接,与浏览器建立tcp三次握手
4、握手成功后,浏览器向服务器发送http请求,请求数据包。
5、服务器处理收到的请求,将数据返回至浏览器
6、关闭TCP连接(四次挥手
7、浏览器收到响应结果解析html代码并请求资源(js、css、图片等)
8、浏览器进行页面布局渲染

输入一个URL用到的协议:
DNS协议(将域名解析为IP地址)、http协议
DNS服务器是基于UDP的,因此会用到UDP协议
http协议是基于TCP的,因此会用TCP协议
TCP的数据包会发送给IP层,用到IP协议。IP层通过路由选路,一跳一跳发送到目的地址。当然在一个网段内的寻址是通过以太网协议实现(也可以是其他物理层协议,比如PPP,SLIP),以太网协议需要直到目的IP地址的物理地址,有需要ARP协议
注意:
DNS协议,http协议属于应用层
IP协议,ARP协议属于网络层

问题11、DNS协议

DNS协议首先主机会查询DNS的缓存,如果没有就给本地DNS发送查询请求。
DNS查询分为两种方式,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS服务器,向根域名服务器发送查询请求,根域名服务器告知该域名的一级域名服务器,然后本地服务器给该一级域名服务器发送查询请求,然后依次类推直到查询到该域名的IP地址。

问题12、ARP协议(地址解析协议)

将IP地址转为MAC地址(物理地址)
  ARP解决的是同⼀个局域⽹内,主机或路由器的IP地址和MAC地址的映射问题。如果源主机和⽬的主机在同⼀个局域⽹内(⽬标IP和本机IP分别与⼦⽹掩码相与的结果相同,那么它们在⼀个⼦⽹),就可以⽤ARP找到⽬的主机的MAC地址;如果不在⼀个局域⽹内,⽤ARP 协议找到本⽹络内的⼀个路由器的MAC地址,剩下的⼯作有这个路由器来完成。
ARP协议的具体内容:
  (1)每个主机都会有ARP⾼速缓存,存储本局域⽹内IP地址和MAC地址之间的对应关系。
  (2)当源主机要发送数据时,⾸先检查ARP⾼速缓存中是否有对应IP地址⽬的主机的MAC地址,如果有,则直接发送数据,如果没有,就像本⽹段的所有主机发送ARP请求分组,该数据包包括的内容有:(源主机IP地址,源主机MAC地址,⽬的主机的IP地址)。
  (3)当本⽹络的所有主机收到该ARP请求分组时,⾸先检查数据包中的IP地址是否是⾃⼰的IP地址,如果不是,则忽略该数据包;如果是,则⾸先从数据包中取出源主机的IP地址和MAC地址写⼊到ARP⾼速缓存中,如果已经存在,则覆盖,然后将⾃⼰的MAC地址写⼊ARP响应包中,告诉源主机⾃⼰是它想要找的MAC地址。
  (4)源主机收到ARP响应分组后,将⽬的主机的IP和MAC地址写⼊ARP⾼速缓存中,并利⽤此信息发送数据。如果源主机⼀直没有收到ARP响应分组,表⽰ARP查询失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机网络工程是指通过计算机网络技术来实现信息传输和资源共享的一门学科。以下是计算机网络工程的基础知识: 1. OSI参考模型:OSI(Open Systems Interconnection)参考模型是一个将计算机网络通信过程划分为七个层次的模型,包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 2. TCP/IP协议族:TCP/IP协议族是互联网所使用的一组协议,包括传输控制协议(TCP)、网络互联协议(IP)、用户数据报协议(UDP)等。TCP/IP协议族是计算机网络通信的基础。 3. IP地址:IP地址是用于标识网络中设备的唯一地址,分为IPv4和IPv6两个版本。IPv4地址由32位二进制数组成,IPv6地址由128位二进制数组成。 4. 子网掩码:子网掩码用于划分IP地址网络部分和主机部分。它与IP地址进行逻辑与运算,得到网络地址。 5. 网关:网关是连接不同网络的设备,用于实现不同网络之间的数据传输。 6. DNS:DNS(Domain Name System)是用于将域名转换为IP地址的系统,使得用户可以通过域名访问互联网上的资源。 7. HTTPHTTPS:HTTP(Hypertext Transfer Protocol)是用于在Web浏览器和Web服务器之间传输数据的协议,而HTTPS(HTTP Secure)是在HTTP基础上加入了安全性的协议。 8. 网络安全:网络安全是保护计算机网络免受未经授权的访问、使用、泄露、破坏等威胁的一系列措施和技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值