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.rhkb.cn/news/472213.html

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

相关文章

HARCT 2025 分论坛4:智能系统传感、传感器开发和数据融合中的智能数据分析

机电液一体化与先进机器人控制技术国际会议(HARCT 2025)将于2025年1月3日-6日在中国广西桂林召开。本届会议围绕“机电液一体化”“机器人”“控制技术”等最新研究成果,邀请海内外在这一领域贡献卓著的专家学者做精彩致辞和报告。 会议期间…

Vue3中一级导航栏的吸顶导航交互以及Pinia优化重复请求

一、前言 在日常的网站中,当鼠标滚轮往页面的底部滑动时,会出现顶部导航栏的隐藏,而出现新的导航栏显示,这就是一级导航栏的吸顶导航交互。本文当实现改模块功能的实现。 二、示例图 参考黑马程序员小兔仙儿PC端项目:…

计算机网络HTTP——针对实习面试

目录 计算机网络HTTP什么是HTTP?HTTP和HTTPS有什么区别?分别说明HTTP/1.0、HTTP/2.0、HTTP/3.0请说明访问网页的全过程请说明HTTP常见的状态码Cookie和Session有什么区别?HTTP请求方式有哪些?请解释GET和POST的区别?HT…

Win11 终端执行 python xxx.py 没反应

在 Win11 上写了一段 Python 代码来分析日志文件, 发现执行没反应。是在 VSCode 里的终端中执行的 python log_stats.py, 是 PowerShell; 也尝试了 cmd, 情况一样。 一开始怀疑代码写错,直到故意在代码里加打印,发现没…

自由学习记录(22)

最后再总结一下吧 虽然过程里很多细节也许我没有去管,毕竟现在就已经存在更好的解决方案了 但大致思想是了解了 A星是一种网格上的遍历方式,为了找到一个目标点和起点之间的要经过的最短节点组 里面更像是动态规划 每一次的遍历,都是当前…

如何保证MySQL与Redis缓存的数据一致性?

文章目录 一、引言二、场景来源三、高并发解决方案1. 先更新缓存,再更新数据库2. 先更新数据库,再更新缓存3. 先删除缓存,再更新数据库4. 先更新数据库,再删除缓存小结 四、拓展方案1. 分布式锁与分布式事务2. 消息队列3. 监听bin…

java-Day06 内部类 Lambda表达式 API

内部类 内部类:就是在一个类中定义一个类 格式例: public class Outer { public class Inner { } } 内部类分类 1.成员内部类(了解) 创建成员内部类 外部类.内部类 对象名new外部类().new内部类() 2.静态内部类(了解) 3.局部内部类(了解) 4.匿名内部类…

【3D Slicer】的小白入门使用指南八

3D Slicer DMRI(Diffusion MRI)-扩散磁共振认识和使用 0、简介 大脑解剖 ● 白质约占大脑的 45% ● 有髓神经纤维(大约10微米轴突直径) 白质探索 朱尔斯约瑟夫德杰林(Jules Joseph Dejerine,《神经中心解剖学》(巴黎,1890-1901):基于髓磷脂染色标本的神经解剖图谱)…

Spring Boot框架:构建可扩展的网上商城

4 系统设计 网上商城系统的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在开发层面是否高效,以及在系统维护层面是否容易维护和升级,因为在系统实现阶段是需要考虑用户的所有需求,要是在设计阶段没有经过全…

【Pikachu】任意文件上传实战

将过去和羁绊全部丢弃,不要吝惜那为了梦想流下的泪水。 1.不安全的文件上传漏洞概述 不安全的文件上传漏洞概述 文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的…

vue3:computed

vue3:computed 扫码或者点击文字后台提问 computed 支持选项式写法 和 函数式写法 1.选项式写法 支持一个对象传入get函数以及set函数自定义操作 2.函数式写法 只能支持一个getter函数不允许修改值的 基础示例 <template><div><div>姓&#xff1a;<i…

Python调用API翻译Excel中的英语句子并回填数据

一、问题描述 最近遇到一个把Excel表中两列单元格中的文本读取&#xff0c;然后翻译&#xff0c;再重新回填到单元格中的案例。大约有700多行&#xff0c;1400多个句子&#xff0c;一个个手动复制粘贴要花费不少时间&#xff0c;而且极易出错。这时&#xff0c;我们就可以请出…

NFS-Ganesha 核心架构解读

NFSv4 简要概述 NFS 这个协议( NFSv2 )最初由 Sun Microsystems 在 1984 年设计提出&#xff0c;由于存在一些不足&#xff0c;因此在随后由几家公司联合推出了 NFSv3。到了 NFSv4 时&#xff0c;开发完全由 IETF 主导&#xff0c;设计目标是&#xff1a; 提高互联下的 NFS 访…

直流保护电路设计及保护器件参数说明和选型

在工控产品设计中时常会涉及到电源保护的电路设计的问题&#xff0c;在深圳瑞隆源电子给出的参考电路来切入主题&#xff0c;对气体放电管、压敏电阻和TVS这三类保护器件的参数及选型进行详细说明&#xff0c;以达到深刻理解的目的。 图1 直流保护电路 举例说明&#xff0c;若…

VBA学习笔记:点击单元格显示指定的列

应用场景&#xff1a; 表格中列数较多&#xff0c;特定条件下隐藏一些无关的列&#xff0c;只保留相关的列&#xff0c;使表格更加清晰。 示例&#xff1a;原表格如下 点击一年级&#xff0c;只显示一年级相关的科目&#xff1a; 点击二年级&#xff0c;只显示二年级相关的科…

一种时间戳对齐的方法(离线)

这段代码的主要功能是: 读取指定目录下的 pcd 文件和 jpg 文件。对于每个 pcd 文件,在 jpg 目录中找到时间戳最接近的 jpg 文件。将找到的 jpg 文件复制到对应的输出目录,实现时间戳对齐。 这种时间戳对齐的操作在多传感器数据融合中非常常见,它确保了不同传感器采集的数据在时…

『VUE』27. 透传属性与inheritAttrs(详细图文注释)

目录 什么是透传属性&#xff08;Forwarding Attributes&#xff09;使用条件唯一根节点禁用透传属性继承总结 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 欢迎关注 『VUE』 专栏&#xff0c;持续更新中 什么是透传属性&#xff08;Forwarding Attributes&#xff09; 在 V…

【代码大模型】Is Your Code Generated by ChatGPT Really Correct?论文阅读

Is Your Code Generated by ChatGPT Really Correct? Rigorous Evaluation of Large Language Models for Code Generation key word: evaluation framework, LLM-synthesized code, benchmark 论文&#xff1a;https://arxiv.org/pdf/2305.01210.pdf 代码&#xff1a;https:…

AdaBoost 二分类问题

代码功能 生成数据集&#xff1a; 使用 make_classification 创建一个模拟分类问题的数据集。 数据集包含 10 个特征&#xff0c;其中 5 个是有用特征&#xff0c;2 个是冗余特征。 数据集划分&#xff1a; 将数据分为训练集&#xff08;70%&#xff09;和测试集&#xff08;3…

maven的optional选项说明以及具体应用

写在前面 本文看下maven的optional选项的作用和用法。 1&#xff1a;什么作用 考虑这样的场景&#xff0c;A依赖B&#xff0c;B依赖C&#xff0c;正常的按照依赖的传递性&#xff0c;A也会间接的依赖C&#xff0c;但是在一些特定的场景中项目A只希望依赖B&#xff0c;而不依…