基础 | 你必须得会网络知识之初识HTTP

[[415233]]

本文转载自微信公众号「前端万有引力」,作者一川。转载本文请联系前端万有引力公众号。

写在前面

秋招已经开始,校招笔试面试环节经常考察《计算机网络》、《操作系统》、《数据库原理》等计算机基础知识,对于应届生而言这是必须掌握的技能。已经工作的伙伴在技术发展遇到瓶颈,不妨将基础再进行巩固,才能让自己走得更远。

初识HTTP

HTTP协议

浏览器的简易原理图

HTTP:超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言文档从web服务器传送到客户端的浏览器。HTTP协议是构建在TCP/IP协议之上的,是TCP/IP协议的一个子集。

TCP/IP族:TCP/IP协议是一系列与互联网相关联的协议集合的总成,分层管理是TCP/IP协议的重要特征。TCP/IP族通常由应用层、传输层、网络层以及数据链路层构成的系统。

计算机网络的分层

应用层:应用层一般是编写的应用程序,决定向用户提供什么应用服务。可以通过系统调用与传输层进行通信,比如:FTP、DNS、HTTP等。

传输层:传输层是通过系统调用向应用层提供处于网络连接中的两台计算机之间的数据传输功能。传输层具有两个不同性质的协议:TCP和UDP。TCP是面向连接的,可靠的,效率低。UDP是无连接的,可靠性低,效率高

网络层:网络层是用于处理在网络上流动的数据包,而数据包是网络传输的最小数据单位。此层规定了通过什么路径(传输路线)到达对方对方计算机,并把数据包传输给对方。

链路层:链路层用于处理连接网络的硬件部分,包括控制操作系统、硬件设备驱动、NIC网络适配器以及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围内。

数据包的封装过程

HTTP的传输过程

在发送端发送数据时,数据会从上层传输到下层,且每经过一层都会被打上该层的头部信息。而接收端接收数据时,数据会从下层传输到上层,传输前会把下层的头部信息删除。

在下图中,当你想在浏览器查看某个页面时,会在应用层发起一个HTTP请求,通过传输层的TCP协议进行分割HTTP报文,并为每个报文打上标记序号、端口号等信息后发送到网络层。在网络层通过IP协议为每个报文增加作为通讯目的地的MAC地址,然后转发给链路层,接收端的服务器在链路层接收请求的HTTP数据。在服务器返回到浏览器的流程则是相反的。

HTTP数据传输过程

TCP的三次握手

使用TCP协议进行通信的双方必须先建立连接,然后才能开始传输数据。为了确保连接双方的可靠性,在双方建立连接时,TCP协议会采用三次握手策略。

第一次握手:客户端发送带有SYN标志的连接请求报文段,然后进入SYN_SEND状态,等待服务端的确认。

第二次握手:服务端接受到客户端的SYN报文段后,需要发送ACK信息对这个SYN报文段进行确认,同时还要发送自己的SYN请求信息。服务端会将上述的信息放到一个报文段(SYN+ACK报文段)中,一并发送给客户端,此时服务端将会进入SYN_SEND状态。

第三次握手:客户端接收到服务端的SYN+ACK报文段后,会向服务端发送ACK确认报文段,这个报文段发送完毕后,客户端和服务端都进入ESTABLISHED状态,完成TCP三次握手。

客户端与服务端之间的三次握手

讲到这里,通常会有疑问:为什么TCP协议要进行三次握手而不是两次呢?

这是因为要建立可靠的通信,首先客户端和服务端都得确保对方具有完整的收发能力。第一次握手客户端发送请求报文给服务端,服务端可以确认客户端的发送能力是正常的以及服务端的接收能力是正常的;第二次握手客户端接收到服务端返回的报文信息,可以确认服务端的收发能力是正常的,同时客户端的收发能力是正常的;第三次握手客户端再次向服务端发送确认信息,此时服务端可以确认客户端的接收报文的能力和服务端的发送能力是正常。最后能够确认双方的收发能力是正常的,因此需要进行三次握手,而两次握手是不能彼此确认双方的收发能力是否正常。

DNS域名解析

在上面的知识点中,我们知道与HTTP有着密切联系的TCP/IP协议,而DNS服务与HTTP协议也有着密不可分的关系。

比如说你要访问百度www.baidu.com,可以使用主机名100.100.10.10或者域名www.baidu.com进行访问,但是相比于一串纯数字的IP地址而言,使用域名更容易让人记住和访问。要知道在计算机网络中TCP/IP协议使用的就是IP地址进行访问,因此需要通过一种机制将域名转换为IP地址。而 DNS服务正是用于解决这个问题的,可以提供域名到IP地址之间的解析服务,其实就像我们打电话时查阅通讯录一样。

DNS域名解析过程

如图所示,当我们在浏览器输入www.baidu.com时,具体细节如下:

① TCP/IP协议会先去访问本地域名解析器,当搜索到对应的IP地址则直接返回到客户端,客户端则直接向服务端发起HTTP请求;而当没有搜索到www.baidu.com对应的IP地址时,则向上溯源,查找上一级域名解析器

② TCP/IP协议访问根域名服务器搜索对应的IP地址,若同样的搜索通过则沿原路返回到客户端;若没有搜索到则继续溯源搜寻

③ TCP/IP协议一直溯源搜寻直至顶级域名服务器,搜寻沿原路返回,否则则告知客户端没有此域名

HTTP事务处理过程

当客户端访问WEB站点时,首先会用过DNS服务查询到域名对应的IP地址,返回到客户端生成HTTP请求,通过TCP/IP协议发送给WEB服务器。WEB服务器接收到请求后,会根据请求生成相应内容,并通过TCP/IP协议返回到客户端。

HTTP事务处理过程

参考资料

 

  • 《超详细 DNS 协议解析》
  • 《图解HTTP》
  • 《计算机网络》
  • 慕课网《编程必备基础-大话HTTP协议》

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/123171.html<

(0)
管理的头像管理
上一篇2025-02-22 16:38
下一篇 2025-02-22 16:39

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注