web与网络编程

使用HTTP协议访问Web

通过发送请求获取服务器资源的Web浏览器等,被成为客户端(client)。
在这里插入图片描述

Web使用一种名为HTTP(超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。

可以说,Web时建立在HTTP协议上通信的。

网络基础TCP/IP

通常使用的网络(包括互联网)都是在TCP/IP协议族的基础上运作的。
而HTTP属于它内部的一个子集

TCP/IP协议族

不同硬件、操作系统之间的通信,所有的一切都需要一种规则,我们把这种规则成为协议

TCP/IP的分层管理

TCP/IP协议族按层次分别分为一下4层:应用层传输层网络层数据链路层

TCP/IP协议族各层的作用如下:

应用层

应用层决定了向用户提供应用服务时通信的活动。
TCP/IP协议族内预存了各类通用的应用服务。比如**FTP(文件传输协议)**和 DNS(域名系统)服务就是其中两类。

HTTP协议也处于该层。

传输层

传输层对应上层应用层,提供处于网络连接中的两台计算机之间的数据传输。

在传输层,有两个性质不同的协议:TCP(传输控制协议)和UDP(用户数据报协议)

网络层

网络层用来处理在网络上流动的数据包。

数据包是网络传输的最小数据单位。

该层规定了通过怎样的路径(传输线路)到达对方计算机,并把数据包传送给对方。

链路层

用来处理连接网络的硬件部分。

TCP/IP通信传输流

在这里插入图片描述

传输过程

  1. 首先发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。
  2. 接着在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割并在各个报文上打上标记序号端口号转发给网络层。
  3. 在网络层(IP协议族),增加作为通信目的地的MAC地址后,转发给链路层。
  4. 接收端的雾浮起在链路层接收数据,按序往上层发布,一直到应用层。此时才算真正接收到客户端发送过来的HTTP请求。
    在这里插入图片描述
    发送端在层与层之间传输数据前,都会打上一个该层所属的首部信息。反之,接收端则会将每层对应的首部消去。

这种把数据信息包装起来的做法称为封装。

与HTTP关系密切的协议:IP、TCP和DNS

负责传输的IP协议

IP网际协议位于网络层

IP协议的作用是把各种数据包传送给对方
而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是IP地址MAC地址

  • IP地址指明了节点被分配到的地址;MAC地址是指网卡所属的固定地址。
  • IP地址可以和MAC地址进行配对。
  • IP地址可变换,但MAC地址基本不会更改。

使用ARP协议凭借MAC地址进行通信

IP间的通信依赖MAC地址。
在网络上,通信的双方通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。
这时会采用ARP协议。

ARP是一种用以解析地址的协议,根据通信双方的IP地址就可以反查出对方的MAC地址。

确保可靠性的TCP协议

TCP协议位于传输层,提供可靠的字节流服务。

字节流服务是指,将大块数据分割成以报文段为单位的数据包进行管理。
可靠的字节流服务是指,能够把数据准确可靠地传给对方。

总之,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。

确保数据能到达目标

为了准确无误地将数据送达目标处,TCP协议采用了三次握手策略

握手过程中使用了TCP的标志(flag) —— SYNACK

三次握手的过程:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 发送端首先发送一个带SYN标志的数据包给对方。
  2. 接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。
  3. 最后,发送端再回传一个带ACK标志的数据包,代表"握手"结束。
    若在握手过程中某个阶段发生中断,TCP协议会再次以相同的顺序发送相同的数据包。

除了三次握手,TCP协议还有其他手段来保证通信的可靠性。

负责域名解析的DNS服务

DNS服务和HTTP协议一样位于应用层。它提供域名到IP地址之间的解析服务
计算机既可以被赋予IP地址,也可以被赋予主机名和域名。比如 www.baidu.com

用户通常使用主机名或域名的方式来访问对方的计算机,而不是直接通过IP地址访问。
这是因为字母配数字的表示形式来指定计算机名更符合人类的记忆习惯。

而计算机去理解名称却相对困难,计算机更加擅长去处理数字。

为了解决上述问题,DNS服务应运而生。
DNS协议提供通过域名查找IP地址,或逆向通过IP地址反查域名的服务。

在这里插入图片描述

各种协议与HTTP协议的关系

通过一张图来了解IP协议、TCP协议和DNS服务在使用HTTP协议的通信过程中各自发挥的作用。
在这里插入图片描述

URI和URL

统一资源标识符URI

URI是由某个协议方案表示的资源的定位标识符。

协议方案是指访问资源所使用的协议类型名称。如采用HTTP协议时,协议方案就是http。除此之外,还有ftp、mailto、telnet、file等。

URI用字符串标识某一互联网资源,而URL标识资源的地点(互联网上所处的位置)。因此,
URL时URI的子集

“RFC3986:统一资源标识符(URI)通用语法”中列举了几种 URI 例子,如下所示。

URI格式

表示指定的URI,要使用涵盖全部必要信息绝对URI绝对URL以及相对URL

相对URL是指,从浏览器中基本URI处指定的URL,形如 /image/logo.gif
在这里插入图片描述

下面是绝对URI格式:

在这里插入图片描述

协议方案名

使用http:https:等协议方案名获取访问资源时,要指定协议类型。不区分字母大小写,最后附上一个冒号(😃。

登录信息(认证)

指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)。此项是可选项。

服务器地址

使用绝对 URI 必须指定待访问的服务器地址。地址可以是类似hackr.jp 这种 DNS 可解析的名称,或是 192.168.1.1 这类 IPv4 地址名,还可以是 [0:0:0:0:0:0:0:1] 这样用方括号括起来的 IPv6 地址名。

服务端口号

指定服务器连接的网络端口号。此项也是可选项,若用户省略则自动使用默认端口号。

带层次的文件路径

指定服务器上的文件路径来定位特指的资源。

查询字符串

针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项可选。

片段标识符

使用片段标识符通常可标记出已获取资源中的子资源(文档内的某个位置)。但在 RFC 中并没有明确规定其使用方法。该项也为可选项。

参考书籍《图解http》

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

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

相关文章

FromData格式提交接口时入参被转成JSON格式问题

本地上传文件后通过事件提交文件,一般先通过前端组件生成文本流,在通过接口提交文本流,提交文本流一般使用FormData的入参形式传入,接口请求头也默认"Content-Type": “multipart/form-data”,但是某些场景统…

Springboot 微信小程序定位后将坐标转换为百度地图坐标,在百度地图做逆地址解析

问题解析以及解决思路 业务:微信小程序定位后,将坐标转换为百度地图坐标,在百度地图做逆地址解析 问题:微信小程序的定位是拿的腾讯地图的经纬度,但是我们app端这边使用的百度地图,如果直接使用腾讯地图的经纬度再使用腾讯地图的逆地址解析需要腾讯和百度商业授权,为了减少授权…

Python爬虫----python爬虫基础

一、python爬虫基础-爬虫简介 1、现实生活中实际爬虫有哪些? 2、什么是网络爬虫? 3、什么是通用爬虫和聚焦爬虫? 4、为什么要用python写爬虫程序 5、环境和工具 二、python爬虫基础-http协议和chrome抓包工具 1、什么是http和https协议…

人力资源招聘系统-提升招聘效率与质量的关键工具

在当今这个竞争激烈的商业环境中,企业要想在市场中立于不败之地,关键在于拥有高素质的人才队伍。然而,传统的招聘方式往往效率低下,难以精准匹配企业需求与人才特质,这无疑给企业的发展带来了不小的挑战。 随着科技的飞…

Python3.11.9+selenium,获取图片验证码以及输入验证码数字

Python3.11.9+selenium,获取图片验证码以及输入验证码数字 1、遇到问题:登录或修改密码需要验证码 2、解决办法: 2.1、安装ddddocr pip install ddddocr 2.2、解析验证码函数 import ddddocr def get_capcha_text():#获取验证码图片ele_pic = driver.find_element(By.XPAT…

2024-11-16-机器学习方法:无监督学习(1) 聚类(上)

文章目录 机器学习方法:无监督学习(1) 聚类(上)1. 聚类的基本概念1.1 聚类的概念1.2 聚类的功能1.3 聚类的算法 2. 相似度或距离2.1 闵可夫斯基距离2.2 相关系数2.3 夹角余弦 3 类或簇3.1 类的特征 4 类与类之间的距离…

Ubuntu 系统端口查询与管理详细分析

目录 前言1. 查询端口占用情况2. 释放占用的端口3. 修改应用程序的端口 前言 Window的端口被占用,类似的知识点:重装mysql时3306端口被占用解决方法 事情起因是宝塔的CPU负载过大,重启服务进程之后还是爆,后续发现是端口被占用&…

go 集成swagger 在线接口文档

安装swaggo go install github.com/swaggo/swag/cmd/swaglatest 编写swag import ("github.com/gin-gonic/gin""goWeb/internal/service""goWeb/model/response" )// UserRouter 路由 func UserRouter(ctx *gin.RouterGroup) {ctx.GET("/…

蓝桥杯每日真题 - 第15天

题目:(钟表) 题目描述(13届 C&C B组B题) 解题思路: 理解钟表指针的运动: 秒针每分钟转一圈,即每秒转6度。 分针每小时转一圈,即每分钟转6度。 时针每12小时转一圈…

Redis性能优化——针对实习面试

目录 Redis性能优化什么是bigkey?bigkey的危害?如何处理bigkey?什么是hotkey?hotkey的危害?如何处理hotkey?如何处理大量key集中过期问题?什么是内存碎片?为什么会有Redis内存碎片?…

小白进!QMK 键盘新手入门指南

经常玩键盘的伙伴应该都知道,现在的键盘市场可谓是百花齐放,已经不是之前的单一功能产品化时代。我们可以看到很多诸如:机械轴键盘、磁轴键盘、光轴键盘、电感轴键盘,以及可能会上市的光磁轴键盘,更有支持屏幕的、带旋…

分布式事务seata基于docker安装和项目集成seata

目录 本地事务 根据隔离性的等级会导致不同的问题 有四种隔离等级 分布式事务 现在有一个场景: 结果: CAP定理 矛盾 总结: es集群使用的是cp: BASE理论 解决分布式事务的思路 Seata Seata的架构 docker安装seata 1.拉取seat…

【Qt实现虚拟键盘】

Qt实现虚拟键盘 🌟项目分析🌟实现方式🌟开发流程 🌟项目分析 需求:为Linux环境下提供可便捷使用的虚拟键盘OS环境:Windows 7/11、CentOS 7开发语言:Qt/C IDE:QtCreator 、Qt5.14.2功…

react中如何在一张图片上加一个灰色蒙层,并添加事件?

最终效果: 实现原理: 移动到图片上的时候,给img加一个伪类 !!此时就要地方要注意了,因为img标签是闭合的标签,无法直接添加 伪类(::after),所以 我是在img外…

电子应用产品设计方案-11:全自动智能全屋智能系统设计方案

一、设计目标 打造便捷、舒适、安全且节能的全屋智能环境。 二、系统组成 1. 智能灯光系统 - 在客厅、卧室、厨房、卫生间等各处安装智能灯具,可通过手机 APP、语音控制实现开关、调光调色。如客厅设置多种场景模式,如“观影模式”(灯光…

服务端高并发分布式结构进阶之路

序言 在技术求知的旅途中,鉴于多数读者缺乏在中大型系统实践中的亲身体验,难以从宏观角度把握某些概念,因此,本文特选取“电子商务应用”作为实例,详细阐述从百级至千万级并发场景下服务端架构的逐步演变历程。同时&am…

WebRTC视频 02 - 视频采集类 VideoCaptureModule

WebRTC视频 01 - 视频采集整体架构 WebRTC视频 02 - 视频采集类 VideoCaptureModule(本文) WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇 WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇 WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前言…

POI实现根据PPTX模板渲染PPT

目录 1、前言 2、了解pptx文件结构 3、POI组件 3.1、引入依赖 3.2、常见的类 3.3、实现原理 3.4、关键代码片段 3.4.1、获取ppt实例 3.4.2、获取每页幻灯片 3.4.3、循环遍历幻灯片处理 3.4.3.1、文本 3.4.3.2、饼图 3.4.3.3、柱状图 3.4.3.4、表格 3.4.3.5、本地…

sqli-labs靶场17-20关(每日四关)持续更新!!!

Less-17 打开靶场,发现页面比之前多了一行字 翻译过来就是,密码重置,大家肯定会想到,自己平时在日常生活中怎么密码重置,肯定是输入自己的用户名,输入旧密码,输入新密码就可以了,但…

node.js下载安装步骤整理

>> 进入node.js下载页面下载 | Node.js 中文网 >>点击 全部安装包 >>删除网址node后面部分,只保留如图所示部分,回车 >>点击进入v11.0.0/版本 >>点击下载node-v11.0.0-win-x64.zip(电脑是windows 64位操作系统适用) >…