一. 了解web及网络基础

2023-11-08

一. 了解web及网络基础

web: world wide web,万维网。是建立在互联网上的网络服务,分为网页和服务器。起初,互联网还只是少数人,为了能够远距离分享知识,前辈们提出一种设想:借助超文本(包含其他文档链接的文本),连成可相互参阅的万维网。现在有三项web构建技术:HTML可以作为网页页面、超文本传输协议http、指定资源所在地址的URL。所以web也指这一系列的集合。而http定义了浏览器发送请求和服务器发送文档的规则,来实现万维网的各种链接,底层用tcp保证可靠传输;

1. 网络基础TCP/IP

通常使用的网络(包括互连网)都是在TCP/IP协议族的基础上运作的,http当然也是,所以理解http还是需要知道一些TCP/IP知识。

  1. 什么是协议族?
    网络上两台不同的主机要进行通信,首先肯定要定义一些的规则,比如发送数据的格式是什么样的?而这种规则就是协议,TCP/IP协议族就是一些相关协议的集合,如图:
    在这里插入图片描述
  2. TCP/IP分层管理
    主机与主机之间通过网络通信需要一个非常复杂的过程和很多的硬件设备,所以将这些分为四个层次,每层实现各自的功能并相互独立,这样也方便管理,每层都有属于自己的协议。
    四层分别是应用层(http、ftp、dns等)、传输层(tcp、udp)、网际层(IP)、数据链路层。所以使用TCP/IP传输http报文流程如图:
    在这里插入图片描述

3. 与http协议密不可分的协议

1)IP协议

网络传输时,IP层会加入自己的包含IP地址的头部交给MAC层,MAC层会加入包含MAC地址的头部;
IP地址用来确定数据传输目的地,MAC地址为硬件地址,需要通过它来找到相应的硬件,即下一个要转发到的主机;

路由器收到包后先暂存起来,再检查其包头,根据目的设备的IP地址查找转发表确定下一个设备IP(路由器或主机),再通过ARP协议将IP地址解析为MAC地址加到MAC帧中,最后根据转发表找到合适接口发出;如图:
在这里插入图片描述
问题:既然网络传输是通过MAC地址找到的目的主机,为什么还要有IP地址?
答:全世界有各种各样的网络,他们使用不同的硬件地址;相互转换异常复杂,而IP地址可以解决这个问题,通过IP地址唯一标识一台设备,通过ARP协议解析出相应硬件地址;

2)TCP协议

传输控制协议:需要先通过三次握手建立连接,收到数据要有确定(停止等待协议),数据传输结束要四次挥手释放连接,所以比较稳定,但也会额外占用资源,接收和发送数据会先放入缓冲里(滑动窗口协议),会根据网络情况决定报文段字节数;

3)DNS服务

网络中的计算机可以使用IP地址来唯一确定,比如192.168.1.110;但这对人来说并不直观,所以我们也使用域名来唯一标识一台主机,如hackr.jp;用户只需使用域名来访问目的主机,计算机就会自动使用DNS(域名解析服务)通过域名找到相应的IP地址,因为IP地址对于计算机来说是容易处理的。
在这里插入图片描述
所以HTTP、TCP、IP、DNS协议是协作完成通信的,如图:

在这里插入图片描述
4. 说明

本文为《图解HTTP》读书笔记,如有错误,请兄弟们指正,大家一起进步。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一. 了解web及网络基础 的相关文章

  • .net core 2.0代理请求总是导致http 407(需要代理身份验证)

    我正在尝试通过 net core 2 0 Web 应用程序中的 WebProxy 发出 HTTP 请求 我得到的代码在 net框架中运行良好 所以我知道 相信 这不是环境问题 我也尝试使用两者来发出请求HttpWebRequest and
  • iOS 上的多个 HTTP 请求与单个 TCP 连接

    我正在开发一个 iPhone 应用程序 它使用我控制的基于 Web 的 API 连接到持续打开的 TCP 端口并通过 TCP API 发出请求 或者为我想要获取的所有数据发出新的 HTTP 请求 会更快或更高效吗 我认为差异可以忽略不计 但
  • 如何使用批处理脚本调用的curl 获取http post 请求的响应代码?

    我正在努力为从我们的工具之一发送 http post 请求提供支持 该工具基本上通过 http 请求执行作业 实现此目的的方法是该工具使用多个参数调用 RunScript bat 该脚本解析这些参数并在验证后发出curl post 请求 P
  • 面向服务的架构 - AMQP 或 HTTP

    一点背景 非常大的整体 Django 应用程序 所有组件都使用相同的数据库 我们需要分离服务 以便我们可以独立升级系统的某些部分而不影响其余部分 我们使用 RabbitMQ 作为 Celery 的代理 现在我们有两个选择 使用 REST 接
  • 如何在flutter项目中使用http拦截器?

    我必须向我的所有 Api 添加标头 有人告诉我为此使用 http 拦截器 但我无法理解如何做到这一点 因为我是颤振的新手 谁能帮我举个例子吗 您可以使用http 拦截器 https pub dev packages http interce
  • UNIX/MacOS 上静态文件的“临时 Web 服务器”?

    是否有一个像小型网络服务器这样的东西 我可以从命令行调用它 只从本地文件系统获取文件并通过特定端口上的 HTTP 为它们提供服务 我希望能够做这样的事情 cd Sites mysite serve 10 0 1 1 8080 这应该会启动一
  • HTTP Header Key 可以重复吗?

    在 JAVA HttpUrlConnection 中 请求 Header 设置的主要逻辑代码如下 public synchronized void set String k String v for int i nkeys i gt 0 i
  • 服务器响应中的“连接:保持活动状态”

    我正在尝试建立从 Silverlight 应用程序到 Apache 服务器托管的 PHP 页面的 HTTP 持久连接 即无需为每个 HTTP 请求创建新的 TCP 连接 为此 我需要网络服务器发送其 HTTP 响应 并将 Connectio
  • Django HTTPS 和 HTTP 会话

    我使用 Django 1 1 1 和 ssl 重定向中间件 通过 HTTPS 创建的会话数据 身份验证等 在站点的 HTTP 部分中不可用 无需将整个站点设置为 HTTPS 即可使其可用的最佳方法是什么 这是设计使然 您无法轻易更改 当通过
  • 用 C++ 解析 HTTP 标头

    我正在使用curl 与服务器通信 当我发出数据请求时 我收到 HTTP 标头 后跟由边界分隔的 jpeg 数据 如下所示 我需要解析出 边界字符串 内容长度 我已将传入数据复制到 char 数组 如下所示 static size t OnR
  • 最适合“正在进行的作业”的 HTTP 状态代码

    向客户端提供的最合适的 HTTP 状态代码是什么 表示 您的请求很好 但仍在进行中 请稍后在完全相同的位置回来查看 例如 假设客户端提交初始请求以启动繁重的查询 服务器立即返回一个 URL 客户端可以定期轮询该 URL 以获取结果 如果客户
  • Angular 2 - Http - 正确忽略空结果

    我有很多处理请求并简单返回 200 的 REST 端点 我注意到将结果映射为错误json 如果我尝试不进行任何类型的映射 我会看到浏览器警告它无法解析 XML 由于不返回任何内容是很常见的 我很好奇我应该如何处理响应 这是一个基本的代码示例
  • 使用 WCF 支持“application/x-www-form-urlencoded”发布数据的最佳方式?

    我正在基于 W3C 规范构建 WCF 服务 该规范定义了接受 application x www form urlencoded 发布数据的 RESTful Web 服务端点 默认情况下 WCF 不支持这种类型的消息编码 我发现了许多创建如
  • android httprequest java.net.UnknownHostException

    我想用android发出http请求 是使用这个 void testHTTP HttpClient httpClient new DefaultHttpClient HttpUriRequest request new HttpPost h
  • Android httpclient文件上传数据损坏和超时问题

    我在 Android 中上传图像时遇到问题 我正在使用 apache httpmime 4 1 lib 代码是这样的 MultipartEntity reqEntity new MultipartEntity HttpMultipartMo
  • 如何查看点击 HTML 按钮时发出的 POST 请求的地址?

    我正在创建一个涉及网络抓取和网络自动化的项目 我想首先提交此表格 http rgsntl rgs cuhk edu hk rws prd applx2 Public tt dsp timetable aspx http rgsntl rgs
  • 同源政策目的可疑

    正如我所读到的 同源策略是防止源自 邪恶 域 A 的脚本向 良好 域 B 发出请求 换句话说 跨站点请求伪造 玩了一下我了解到的Access Control Allow Origin标头和CORS据我了解 它允许从好域 B 指定服务器 域
  • Go客户端程序生成大量TIME_WAIT状态的socket

    我有一个 Go 程序 它从多个 goroutine 生成大量 HTTP 请求 运行一段时间后 程序报错 connect cannot allocaterequestedaddress 当检查时netstat 我得到大量 28229 个连接T
  • http和https在编程中有什么区别[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我只知道 s 代表 安全 用户永远不
  • 客户端/服务器使用哪些 Cache-Control 标头值?

    我试图了解哪些值Cache Control将在请求中使用 并将在响应中使用 This https stackoverflow com questions 42652931 why use cache control header in re

随机推荐

  • 华为这么容易进吗?轻轻松松拿到25K的offer...

    美本计算机专业 代码能力一般 之前有过两段实习以及一个学校项目经历 本人面试的是测试开发岗 期间经历了笔试 gt 性格测试 gt 技术一面 gt 技术二面 gt 总监面 gt OC这几个环节 基本上每周完成一个环节 由于华为面试环节全部完成
  • 实战分享:I2C总线详解

    大家好 我是阿荣 感恩遇见 本文部分图文来源于网络 并经过整合 编辑和勘误 实战分享栏目将重点介绍嵌入式的基础知识 并融合一些实战经验 持续勘误和迭代 建议关注和收藏 WX同名 I2C总线是一种常用的通信接口 让我们先来看看百度百科对它的定
  • 微信小程序 - 暗黑模式(深色模式)

    最近暗黑模式成为了潮流 微信小程序也推出了暗黑模式适配 下面来记录一个下适配暗黑模式 效果图 一 实现 1 开启暗黑模式 在 app json 中配置 darkmode true app json darkmode true 2 配置主题文
  • Linux 下 C语言编写 TCP/IP文件传输

    一 概述 文件传输 分为文件名字和文件内容 传递文件名后 等待另外一端创建相应的文件并回复 然后在开始传输文件内容 以下程序还设计到目录的查询 二 目录的查询 主要头文件 include
  • Android Studio 安装 (MAC)

    一 下载地址 Download Android Studio App Tools Android Developers 二 安装配置 1 Do not import settings 2 Cancel gt Next 3 Standard
  • 极限验证,滑动验证-java实现

    先给大家看个图 图中共色框内的验证码 大家应该见过 今天咱们就实现这个插件 其实这个插件是第三方服务的 极限验证码 官网 http www geetest com 官网有文档还有教程 大家可以自己看 我也是运行官方的源码 1 在官网 htt
  • JS中断循环

    js中断循环 中断循环 for var i 1 i lt 200 i if i 7 0 break 中断循环 document write i t 中断一次循环 继续下面的循环 for var i 1 i lt 100 i if i 3 0
  • 计算机投影仪显示无信号如何解决,投影仪无信号输入的解决办法是什么?

    Lin 4987 2015 11 05 13 27 笔记本电脑连接投影仪无信号 1 检查投影机与电脑连接使用的是VGA线还是HDMI线 2 如果是VGA连接 请检查投影机是否选择到VGA或者电脑模式 如果是HDMI连接的话 请检查投影机是否
  • ECCV 2016《SSD: Single Shot MultiBox Detector》论文笔记

    本学弱喜欢在本子上记笔记 但字迹又丑 望看不懂我的字的大佬不要喷我 看得懂的大佬批评指正
  • HCIA Datacom_DHCP基础与原理、常见的网络服务与应用、PPPoE原理与配置

    DHCP基础与原理 一 应用场景 DHCP服务器能够为大量主机分配IP地址 并能够集中管理 DHCP用来自动分配IP地址 在DHCP中有两个角色 DHCP客户端 DHCP服务器 DHCP是一种类型的C S架构 二 报文类型 1 DHCP D
  • android 使用BitmapShader实现圆形以及放大镜效果

    在一些显示用户头像的时候 大多数都是显示圆形的 而不是显示一个正方形或者长方形 这样显得很呆板 视觉效果也不好看 今天就用二种方式实现图片圆形显示的效果 在先讲这个效果实现之前 讲下BitmapShader到底能干嘛 android有几个关
  • 多尺度无序池化卷积神经网络——MOP-CNN(MultiScale Orderless Pooling)

    本文讲解的是Yunchao Gong发表在2014年的ECCV会议上的 Multi Scale Orderless Pooling of Deep Convolutional Activation Features 中文译名是深度卷积激活特
  • EasyAR平面图形跟踪和识别图上显示视频

    功能简介 Planar Image Tracking是用于检测与跟踪日常生活中有纹理的平面物体 所谓 平面 的物体 可以是一本书 一张名片 一幅海报 甚或是一面涂鸦墙这类具有平坦表面的物品或事物 这些物体应当具有丰富且不重复的纹理 为了创建
  • Android-自定义UI模板

    我们要用UI模板的时候 如果所有的Topbar内容都是没有变的话 那我们用在xml文件中include进去就好了 但是如果Topbar中的内容是会随着fragment或者activity改变的话 拿我们总不能每次都去写多个文件 再分别inc
  • QT学习-界面中实时绘制函数图像

    通过重写QT中QWidget类中的paintEvent函数 我们就可以做到在widget中进行函数图像的绘制 我使用的是QCreator的UI设计器 首先我们需要从QWidget继承一个子类 并重写他的paintEvent class sh
  • poi导入导出

    为什么要使用poi呢 为什么不适用easypoi和easyexcel呢 那肯定是这两个工具类不能实现功能 所以才采用poi啊 一般的导入导出 就采用上面两个工具就可以了 简单方便 但是如果你要对单元格进行复杂的操作的时候 需要对特定的单元格
  • C#关于时间(获取特定格式的时间及多种方式获取当前时间戳)以及10位和13位时间戳转为特定格式

    一 获取当期时间并转为特定格式 string tradeTime DateTime Now ToString yyyyMMddHHmmss DateTimeFormatInfo InvariantInfo 设置所需要的时间格式 string
  • 判断对象里的属性是否都为空(适用字符串、数组结构对象)

    好久没写博客记录了 场景 表单填写时 填写完对应栏目需要有填完的标识 下面是自己写的一坨代码 export function objecAtrtIsEmpty data 如果是数组 遍历数组里面的 if Array isArray data
  • ubuntu18.04安装pycharm专业版

    安装的pycharm版本 2017 4 操作系统 ubuntu18 04 LTS 步骤1 在官网下载安装包 https www jetbrains com pycharm download section linux 下载文件位于 Down
  • 一. 了解web及网络基础

    一 了解web及网络基础 web world wide web 万维网 是建立在互联网上的网络服务 分为网页和服务器 起初 互联网还只是少数人 为了能够远距离分享知识 前辈们提出一种设想 借助超文本 包含其他文档链接的文本 连成可相互参阅的