HTTP 网络通讯过程

news2024/12/22 23:11:50
1.知识点:

在计算机网络中,通信协议用于规范数据传输的格式和传送方式。下面是常见的网络通信协议:

  1. HTTP协议:超文本传输协议,用于在Web浏览器和Web服务器之间传输HTML文件和其他资源。

  2. HTTPS协议:HTTP安全版,使用SSL/TLS加密协议对HTTP协议进行了加密,保证数据传输过程中的安全性。

  3. FTP协议:文件传输协议,用于在网络上进行文件传输,支持上传、下载和删除等操作。

  4. SMTP协议:简单邮件传输协议,用于电子邮件的发送。

  5. POP3协议:邮局协议版本3,用于电子邮件的接收。

  6. IMAP协议:Internet电子邮件访问协议,用于电子邮件的接收和管理。

  7. TCP/IP协议:传输控制协议/因特网协议,是互联网所使用的标准协议。

  8. ICMP协议:Internet控制消息协议,用于网络故障排除和诊断。

  9. DNS协议:域名系统协议,用于将域名解析为对应的IP地址,方便网络通信。

  10. WebSocket协议:一种基于TCP协议的全双工通信协议,可用于Web应用程序的即时通信。

HTTP(超文本传输协议)是一种常用的客户端-服务端协议,用于在Web浏览器和Web服务器之间传输数据。以下是HTTP网络通讯的过程:

建立TCP连接:浏览器向服务器发起请求时会先建立TCP连接,通过三次握手确保连接通畅。

发送HTTP请求:浏览器向服务器发送HTTP请求,请求包括请求方法、URL地址、HTTP版本号、请求头等信息。

服务器响应请求:服务器接收到HTTP请求后,根据请求信息生成HTTP响应报文,响应报文包括响应状态码、响应头、响应正文等。

浏览器解析HTML代码:如果响应正文是HTML代码,浏览器会对HTML代码进行解析并生成DOM树、CSS样式树、渲染树等。

页面显示:浏览器利用生成的渲染树,按照HTML文档中节点的顺序,绘制页面并展示给用户。

断开TCP连接:当浏览器完成对服务器的请求并成功接收到响应后,浏览器会关闭TCP连接。

WebSocket是一种基于TCP协议的全双工通信协议。全双工通信可以理解为双向通信,也就是说,客户端和服务端可以同时发送和接收数据,实现实时消息传输。

与之前的HTTP协议不同的是,HTTP是一种无状态协议,每个请求都是一个独立的事务,不保留状态信息。而WebSocket协议在建立连接后,维持了一个长连接,使得客户端和服务器可以随时相互发送数据,而不需要重新建立连接。

使用WebSocket协议进行通信时,客户端首先要向服务器发起WebSocket握手请求,服务器在接到请求后返回信息表示已经同意WebSocket连接。连接建立后,客户端和服务器之间可以直接发送和接收数据,Web应用程序可以很方便地实现实时通信或者实现在线游戏等功能。


一、 网络模型概览

网络模型是对计算机网络通信的不同层次进行抽象和划分,以便实现网络通讯的标准化和协同。其中比较常用的网络模型有OSI七层模型和TCP/IP四层模型。

OSI七层模型:

物理层:负责传输二进制数据流,描述了通信介质、电器特性等硬件细节。

数据链路层:负责在物理层上传输数据块(帧)、管理和控制物理链路,保证数据的可靠传输。

网络层:负责通过路由选择算法将数据包从源地址传输到目标地址的网络节点上,实现跨网络的通信。

传输层:提供端到端的数据传输服务,包括建立连接、确认可靠传输等功能。

会话层:管理不同应用程序之间的会话,实现应用程序之间的交互。

表示层:将数据格式转换为应用程序可以理解的格式,包括数据压缩、加密、解密、字符编码等。

应用层:提供网络服务的用户接口,例如HTTP、SMTP、FTP等应用协议。

TCP/IP四层模型:

网络接口层:定义了电器特性、数据格式、传输格式等硬件和软件接口规范。

网络层:负责IP地址的分配、路由选择等网络层协议。

传输层:提供端到端的数据传输服务,并保证可靠传输,包括TCP和UDP协议。

应用层:提供各种应用协议,例如HTTP、FTP、SMTP、DNS等协议,通过网络实现应用程序之间的通讯和数据交换

如下图:

在实际应用中,不同的网络模型有不同的适用场景和优缺点,需要根据具体需求进行选择。
在这里插入图片描述

二、 HTTP 网络通讯过程

示例:简单的网络拓扑模型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 例如

当我们键入网址并敲击回车后,从输入URL到浏览器显示网页的过程可分为以下几个步骤:

DNS解析:浏览器会先检查本地DNS缓存中是否有该域名的记录,如果没有则向DNS服务器发起请求。DNS服务器将返回IP地址,供浏览器进行下一步访问。

建立TCP连接:浏览器利用HTTP协议向服务器发送一个请求,请求包括请求方法、URL地址、HTTP版本号、请求头和请求主体等信息。建立TCP连接是依靠三次握手,也就是浏览器主动向服务器发送SYN报文,服务器收到后回应ACK+SYN报文,浏览器再发送ACK报文,完成三次握手,建立TCP连接。

传输HTTP消息:TCP连接建立成功后,浏览器就可以发送HTTP请求到服务器了。请求到达服务器后,服务器会解析请求消息,并根据请求方法返回相应的HTTP响应消息给浏览器。

服务器处理请求:一旦服务器收到请求,它就会处理这些请求,处理的方法包含读取文件,运行动态脚本等等。一旦处理完毕,服务器就会返回响应,并关闭TCP连接。

浏览器渲染页面:浏览器接收到服务器发送的HTML、CSS、JavaScript等资源文件后,就会解析和渲染网页。将HTML转换成Dom树结构,CSS转换成样式表对象,JavaScript解析生成执行环境,最后将他们整合之后显示在浏览器中。

完成:网页请求完成之后,浏览器会关闭TCP连接。

以上是HTTP网络通讯的一般过程,不同的请求和响应可能包含不同的内容和流程,但基本步骤是类似的。

客户端(发送方组包)
1)HTTP

浏览器解析 URL(协议、域名、资源路径)
生成 HTTP 请求报文

2)DNS(真实地址查询)

向 DNS 服务器查询服务器域名对应的 IP 地址
域名中越靠右的位置表示其层级越高

3)协议栈(指南帮手)

获取 IP 后,将之后的 HTTP 传输工作交给操作系统内核中的协议栈处理
    TCP/UDP:负责收发数据
    IP:负责将网络包送达给对方

4)TCP(可靠传输)

报文头部包含源端口号、目标端口号、序号、确认号等
TCP 传输数据之前,要先三次握手建立连接(三次握手的目的是保证双方都有发送和接收的能力)
TCP 报文生成:TCP 头部 + HTTP 报文

5)IP(远程定位)

将数据封装称网络包发送给通信对象
IP 报文生成:IP 头部 + TCP 头部 + HTTP 报文

6)MAC(两点传输)

还需要加上 MAC 头部(发送方和接收方的 MAC 地址等信息),MAC 头部是以太网的头部
MAC 作用:MAC 地址用来唯一标识设备,再通过 ARP 协议找到下一站路由器的 MAC 地址,实现两点之间的传输
至此,网络包报文(MAC 头部 + IP 头部 + TCP 头部 + HTTP 报文)如下图所示:

在这里插入图片描述
7)网卡(出口)

真正的数据发送过程:将数字信息(IP 网络包)转换为电信号,才能在网线上传输
控制网卡需要靠网卡驱动程序
网卡本身具有 MAC 地址,且会核对数据包的接收方 MAC 地址与自身 MAC 地址是否相同,不是则丢弃

8)交换机(送别)

交换机的设计:将网络包原样转发到目的地
交换机工作在 MAC 层,也称为二层(数据链路层)网络设备
交换机接收到达网线接口的电信号,并转换为数字信息
二层交换机本身具有一个 MAC 地址(标识自身硬件设备),但其各端口不具有 MAC 地址(三层交换机则每个端口都有 MAC 地址)
交换机根据交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的网线端口。交换机的 MAC 地址表包含两个信息:
设备的 MAC 地址
该设备连接在交换机的哪个端口上

在这里插入图片描述
9)路由器(出境)

路由器基本原理:
与交换机类似,通过查表判断包的(下一个路由器或目标设备)转发目标
路由器基于 IP 设计,俗称三层(网络层)网络设备,其各端口具有 MAC 地址和 IP 地址(和计算机网卡一样);而交换机基于以太网设计,俗称二层(数据链路层)网络设备,其端口不具有 MAC
地址(也有三层交换机,具有部分的路由器功能)
MAC 头部的作用就是将包送达路由器,其中的接收方 MAC 地址就是路由器端口的 MAC 地址
包接收操作:将网线接口的电信号转成数字信号,并核对 MAC 地址
完成包接收操作之后,路由器就会去掉包开头的 MAC 头部
接下来会根据 MAC 头部后方的 IP 头部中的内容进行包的转发操作
包发送操作:将网络包的数字信号转成电信号并通过端口发送出去,经过层层转发之后,到达最终目标设备
首先是查询路由表判断转发目标
通过 ARP 协议根据对方的 IP 地址查询 MAC 地址,并将查询结果作为接收方 MAC 地址

在这里插入图片描述

三、 以太网(传输)

以太网是一种局域网(LAN)技术,可以用于在短距离内传输数据。它采用了CSMA/CD协议(载波监听多路访问/冲突检测)来进行数据传输,也就是在发送数据之前,网卡会检查信道是否空闲,如果忙碌就等待一段随机时间再试。

在发送数据时,数据会被分割成帧的形式,每帧包含了目的地址、源地址、长度等信息,并且每个帧都有一个起始和结束标志。当帧到达接收端时,接收端会对帧的CRC校验和进行检查,以确保数据完整性,如果发现校验和错误,则会要求发送端重发数据。

以太网的传输速度和距离取决于所使用的规格和技术,不同的以太网规格支持不同的传输速率和距离。比如,10BASE-T支持最大传输速率为10Mbps,最远传输距离为100米;而1000BASE-T则支持1Gbps的传输速率,但传输距离较短。

在网络包(跨网段)传输过程中,源 IP 和目标 IP 始终是不会变的,一直变化的是 MAC 地址,因为需要 MAC 地址在以太网内进行两个设备之间的包传输。

(对于同网段的二层转发,MAC 地址则不变。)
服务器端(接收方解包)
1)路由器(入境)
2)交换机(境内)
3)服务器(终点)

服务器层层扒开数据包头部,最后通过 TCP 头部的端口号确认是 HTTP 进程想要的这个包 HTTP 进程将资源封装在 HTTP
响应报文中,也依次穿上 TCP、IP、MAC 头部,从网卡出去,交由交换机转发到路由器,经过层层转发,最后到达客户端
客户端扒剩 HTTP 响应报文后,交给浏览器去渲染页面并显示资源
最后客户端要离开时,向服务器发起 TCP 四次挥手,至此双方连接断开

示例:服务器和客户端相互扒皮
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《水经注地图服务》如何快速发布经纬度DAT缓存

概述 《水经注地图服务》的快速发布功能是一个能够帮助用户实现快速发布地图服务的功能,并且提供常规情况下大多数用户所需的默认配置,让用户在发布地图时更加便捷。 这里为大家演示如何快速发布经纬度DAT缓存以及如何在水经微图中加载。 准备工作 离…

2023-6-14-第五式原型模式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

IDEA中类模板注释和方法注释模板

类注释 /* *ClassName ${NAME} *Author --你的别名 *Description //TODO *Date ${DATE} ${TIME} *Version 1.0 **/ 把上面的代码粘贴到settings-editor-file and code templates下的class的“public class”和#parese的中间 2.方法注释 /* *Author --你的别名 *Description …

ZK+麦克风:反AI音频认证

1. 引言 当前,已越来越难以区分AI生成的音频与人类的声音。可能带来欺诈、身份盗用以及其它滥用问题。 在AI生成的音频可以完美模仿人声的当前环境中,需要一个可靠的信任链——从最初的音频捕获到最终的播放。这种信任链可以使用加密技术建立&#xff…

Java实训日志04

文章目录 八、项目开发实现步骤(六)创建数据访问接口1、创建学校数据访问接口2、创建状态数据访问接口3、创建学生数据访问接口4、创建用户数据访问接口 八、项目开发实现步骤 (六)创建数据访问接口 DAO: Data Acess Object - 数…

antd-vue - - - - - upload组件的使用

upload组件的使用 参数说明: file:list : 上传列表数据 name: 上传时的key data: 上传时额外的参数 header: 上传列表数据 actions: 上传接口地址 before-upload: 上传之前的回掉 change: 传文件改变时 // 变量定义updateData: { billId: "", fileType: &…

Flutter 自定义Grade组件

/*** images 图片数组* titles title数组* length_w 一行的数量* length_h 行数*/static Widget getMenuGrade(List<String> images, List<String> titles, int length_w, int length_h) {int startIndex 0;List<Widget> rowList [];List<List<Widge…

docker-compose服务名称和容器名称区别

需求及结论 在docker-compose文件一般书写如下&#xff1a; version: 3.8 x-logging: &default-loggingoptions:max-size: "200m"max-file: "5"driver: json-file x-environment: &default-environmentTZ: Asia/ShanghaiLANG: C.UTF-8 services:…

前端什么最难学?

前言 个人认为是JS&#xff0c;无论是在平时的项目或者找工作时候JS都是大头&#xff0c;相比起其他的部分&#xff0c;它相对而言是难一点&#xff0c;同时也是十分重要的一部分&#xff0c;学好原生JS&#xff0c;后续的学习才能基于此循序渐进&#xff0c;下面是我总结的关…

(2023 最新版)大厂面试必问的1000道Java面试题附答案详解

很多 Java 工程师的技术不错&#xff0c;但是一面试就头疼&#xff0c;10 次面试 9 次都是被刷&#xff0c;过的那次还是去了家不知名的小公司。 问题就在于&#xff1a;面试有技巧&#xff0c;而你不会把自己的能力表达给面试官。 应届生&#xff1a;你该如何准备简历&#x…

报表生成器FastReport .Net用户指南:“SVG”对象

FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案&#xff0c;使用FastReport .NET可以创建独立于应用程序的.NET报表&#xff0c;同时FastReport .Net支持中文、英语等14种语言&#xff0c;可以让你的产品保证真正的国际性。 FastReport.NET官方版…

数据库|TiDB灾备切换实践-部署

刘昊 | 数据库工程师 最近手头有个系统&#xff0c;有需要搭建灾备库的需求&#xff08;RTO要求4小时内&#xff0c;根据实际情况计算&#xff09;。考虑到生产系统是5版本&#xff0c;TiCDC存在一些兼容性问题&#xff0c;且TiDB Binlog已经有实践案例及经验可供参考&#xf…

SpringCloud Eureka注册服务提供者(七)

这里我们在原来的服务提供者项目 microservice-student-provider-1001 上面直接修改&#xff1a; 首先pom.xml修改&#xff0c;加上eureka客户端依赖&#xff1a; <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>…

【MySQL高级篇笔记-数据库备份与恢复(下) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、物理备份与逻辑备份 二、mysqldump实现逻辑备份 1、 备份一个数据库 2、备份全部数据库 3、备份部分数据库 4、备份部分表 5、备份单表的部分数据 6、排除某些表的备份 7、只备份结构或只备份数据 8、备份中包含存储过…

2023开放原子全球开源峰会展区“云游图鉴”,带你畅游开源世界!

2023 开放原子 全球开源峰会 畅游回顾 2023 开放原子全球开源峰会&#xff0c;6 月 11 日-13 日在北京圆满举行&#xff01; 一大批开源人从四面八方奔来&#xff0c;共赴这场盛会&#xff0c;在开源技术新世界里畅快云游&#xff01; 科技骨干企业、开源高端项目&#xff0…

前端眼里的Docker概念、工作流和实践-前端开发者也需要掌握Docker:加速你的开发流程

如果现在有个厨王争霸赛&#xff0c;比赛的菜式是做一道&#x1f414;相关的菜式&#xff0c;选手们需要做不同的鸡&#xff0c;有需要公鸡和母鸡的&#xff0c;有需要鸡仔的&#xff0c;为了让选手们完美的进行比赛&#xff0c;主办方为每个选手准备了独立厨房&#xff0c;厨房…

代码随想录算法训练营第五十七天|647. 回文子串|516.最长回文子序列

LeetCode647. 回文子串 动态规划五部曲&#xff1a; 1&#xff0c;确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;本题如果我们定义&#xff0c;dp[i] 为 下标i结尾的字符串有 dp[i]个回文串的话&#xff0c;会发现很难找到递归关系。dp[i] 和 dp[i-…

【备战秋招】每日一题:4月29日美团春招:题面+题目思路 + C++/python/js/Go/java带注释

2023大厂笔试模拟练习网站&#xff08;含题解&#xff09; www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据&#xff0c;挂载到我们的OJ上&#xff0c;供大家学习交流&#xff0c;体会笔试难度。现已录入200道互联网大厂模拟练习题&a…

好用的Windows数据恢复软件--傲梅恢复之星

​数据恢复软件有什么用&#xff1f; 现在&#xff0c;人们拥有大量的文件需要保留和保护&#xff0c;包括照片、视频、文档、游戏等等。了解数据安全的用户会利用云存储服务和外部设备来存储和备份重要的数据。 但更多的用户并不重视数据备份。这样做是相当危险的&#xf…

网络安全进阶学习第一课——认证崩溃之弱口令与暴力破解

文章目录 一、什么是弱口令&#xff1f;二、暴力破解1、暴力破解攻击产生原因2、暴力破解分类3、具体案例 一、什么是弱口令&#xff1f; 弱口令没有严格和准确的定义&#xff0c;通常认为它是容易被别人猜测到或被工具破解的口令均为弱口令。 在允许社会工程学攻击的情况下&…