【图解HTTP】(二)IP、TCP和DNS

2023-11-07

一、负责传输的IP协议

IP协议,即Internet Protocol,网际协议,几乎所有使用网络的系统都会用到IP协议。
按层次分,IP协议位于网络层,负责将数据包发送给对方。而要确保数据确实传送到对方那里需要满足各种条件,其中两个重要的条件就是IP地址MAC地址
IP地址指明了节点被分配到的地址,而MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址配对,且IP地址是可变的,而MAC地址一般是固定的。
IP间的通信依赖于MAC地址。在网络上,通信双方往往不是直接进行通信的,而是要经过多个网络设备的中转才能建立通信,也就是网络层所起到的作用:选择传输路径。
那么如何选择传输路径呢?这时候就需要借助IP协议了,我们需要知道通信双方的IP地址,在中转时采用ARP协议(Address Resolution Protocol)利用IP地址来查出对应的MAC地址,然后利用MAC地址来搜索下一中转的目标。
没有人能过前面掌握互联网中的传输状况。
在中转的过程中,那些计算机和路由只能获知很粗略的传输路线,这种机制称为路由选择
就像是寄快递的人,只需要把快递交给驿站或者取件的快递员,然后快递就会由快递公司进行运输,下一个节点快递会发往哪里并不需要关心。

二、确保可靠性的TCP协议

TCP协议即传输控制协议,是位于传输层的一个协议,负责提供可靠的字节流服务。
所谓的字节流服务是指,为了方便传输,将大块的数据分割成以报文段为单位的数据包进行管理。而可靠的传输服务是指确保数据能过准确可靠地发送给对方。
那么如何知道我们发送的数据确实被对方接收到了呢?这时候就该TCP协议发挥作用了。
为了确保数据准确可靠地发送给对方,TCP协议采用了我们常常听到的三次握手策略。用TCP协议把数据包发送出去后并不会对传送的情况置之不理,而是一定会向对方确认是否成功送达。那么TCP协议是如何实现该功能的呢?
实现过程如下:

  • 发送端首先发送一个带SYN标志的数据报给对方。
  • 接收端受到该数据包后,回传一个带有SYN/ACK标志的数据包告诉发送端已经受到该数据包
  • 最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。
    在这里插入图片描述
    注意:如果在握手过程中某个阶段莫名中断了,TCP协议会再次以相同的顺序发送相同的数据包。
    除了三次握手策略以外,TCP协议还有其他各种手段来保证通信的可靠性。

三、负责域名解析的DNS服务器

DNS服务是和HTTP一样位于应用层的协议。它提供了域名到IP地址之间的解析服务。
计算机既可以被赋予IP地址,也可以被赋予主机名和域名。
例如,我们在浏览器访问某个网站时,通常在地址栏输入的是该网站的域名,而不是IP地址,因为相比于IP地址而言,域名更方便记忆。但是设备间的通信依赖于IP地址,这时候就需要一种能够把域名解析为IP地址的服务,这个服务就是DNS服务。
通过DNS协议我们可以通过域名查找IP地址,也可以通过IP地址反查域名。
在这里插入图片描述

四、IP、TCP和DNS三者与HTTP的关系

在这里插入图片描述

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

【图解HTTP】(二)IP、TCP和DNS 的相关文章

  • 我可以使用 HTTP 范围标头“有意”加载部分文件吗?

    我正在研究 HTTP 范围标头 specs http www w3 org Protocols rfc2616 rfc2616 sec14 html sec14 16 据我了解 我可以设置文件的字节范围ala 0 199 2000 200
  • 从手机访问本地主机[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • Flutter http请求上传mp3文件

    我使用这个 api 上传 mp3 文件 使用这种方法 Future
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 是否可以检测 http git 远程是智能还是愚蠢?

    我正在我的应用程序中实现一个选项来使用 depth 1制作 git repo 的最小功能克隆 我刚刚意识到愚蠢的 http 传输不支持 depth 我想自动检测 http 远程是愚蠢的还是聪明的 这样我就可以省略 depth与哑 http
  • 我可以从 HTTP 请求中找到无线接入点的 BSSID(MAC 地址)吗?

    假设有人在咖啡店里无线连接到互联网 并向 johnsveryownserver com 发送 HTTP 请求 服务器端 有什么方法可以确定我的MAC地址吗 无线接入点他们连接到什么 请注意 我对他们机器的 MAC 地址不感兴趣 如果我无法使
  • 流星图像、CSS、“普通”Web 服务

    我经常看到这个问题出现 如何在我的 Meteor 网站上放置图像 如何使用 Meteor 托管 标准 网页内容 我尝试添加一个 img src img myimage png 标签但没有图像显示 如何在 Meteor 站点上托管一些文件 将
  • 尝试克隆一个 git 存储库,但它卡在克隆到中

    我使用的是 Windows 10版本 10 0 19042 内部版本 19042 GIT Ver 2 32当尝试使用 git bash 执行以下命令时git clone depth 1 b carla https github com Ca
  • 这个重写规则是什么意思?

    我正在安装 phpancake 有一个像这样的文件夹 application install library public sql schema install html install php 这条规则意味着什么 RewriteEngin
  • http和https在编程中有什么区别[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我只知道 s 代表 安全 用户永远不
  • 哪些具体用例需要通过 WebSockets 和长轮询使用 BOSH? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 防止表单重新提交

    第一页包含一个 HTML 表单 第二页 处理提交的数据的代码 第一页中的表格已提交 浏览器被重定向到第二页 第二页处理提交的数据 此时 如果刷新第二页 则会弹出 确认表单重新提交 警报 这可以预防吗 人们过去常采取两种方法 方法一 使用 A
  • Rest 和 Http 中“无状态”的含义

    当我阅读有关 REST 是什么的文档时 他们总是说 REST api 应该是无状态的 在这里 我感觉有点尴尬 因为普通的 HTTP 也是无状态的 既然REST可以说是一种使用HTTP协议的特殊架构 那么说REST应该是无状态的似乎是多余的
  • eBay API 调用不适用于 UPC/EAN

    eBay 的 API findItemsByProduct 操作适用于 UPC 和 EAN 但不幸的是它不起作用 例如 下面的 HTTP GET 请求会抛出 无效的产品 ID 值 错误41 Note 请将 SECURITY APPNAME
  • 角度报告进度返回上传的文件总数,而不是进度

    在我的组件中我有这个 this authService addPost post subscribe data gt if data type HttpEventType UploadProgress console log data el
  • Android 套接字和 HTTP 响应标头

    有趣的是 我可能无意中找到了解决方案是否可以使用普通套接字连接发送 HTTP 请求并接收没有标头的响应 https stackoverflow com questions 8320574 我希望我忽略了一些东西 无论如何 我正在连接到 We
  • 如何解析来自基于 C 的 Web 服务器的 HTTP 请求

    我有一个编程项目 我必须创建一个处理 HTTP 请求的多线程 Web 服务器 我刚刚学习了套接字编程 并且运行了一个客户端和一个服务器 我想知道解析 HTTP 请求标头的最佳方法是什么 我看到了这个 如何用C 解析http请求 https
  • 如何用 C 语言通过 HTTP 协议发送图像?

    我是一名正在做网络服务器练习的学生 我需要一些帮助 我的网络服务器在文本页面上运行良好 但是每当浏览器发送一个 GET img jpg HTTP 1 1请求 我不知道如何处理 我听说 HTTP 协议是基于文本的 那么如何在 HTTP 响应中
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • Angular2:动态同步http请求

    Goal 发出一系列同步 http 请求并能够将它们作为一个可观察流进行订阅 示例 不工作 let query arr test1 test2 test3 function make request query arr if query a

随机推荐

  • Guns入门

    一 下载源码包 下载地址 https gitee com stylefeng guns 先将项目的guns admin sql下的SQL文件导入到数据库中 主要数据表
  • Java中常见的运行时异常

    ArithmeticException 算数运算异常 由于除数为0引起的异常 ClassCast Exception 类型转换异常 当把一个对象归为某个类 但实际上此对象并不是由这个类创建的 也不是其子类创建的 则会引起异常 ArraySt
  • Ethernet_II帧和802.3_Ethernet帧格式比较

    一 Ethernet帧格式的发展 1980 DEC Intel Xerox制订了Ethernet I的标准 1982 DEC Intel Xerox又制订了Ehternet II的标准 1982 IEEE开始研究Ethernet的国际标准8
  • 【Linux】linux进程间通信netlink socket(用户与内核通信) 二

    目录 1 netlink socket介绍 2 netlink socket特点 3 为什么引入generic netlink 4 netlink通信架构 5 相关结构体 5 1 genl family 5 2 genl ops 5 3 n
  • 如何快速合并两个有序数组?

    前言 大家好 我是来自于 华为 的 程序员小熊 今天给大家带来一道与 数组 相关的题目 这道题同时也是字节 微软和亚马逊等互联网大厂的面试题 即力扣上的第 88 题 合并两个有序数组 本文主要介绍 逆向双指针 的策略来解答此题 供大家参考
  • Windows 纤程详解

    Windows 纤程详解 在Windows2000 XP中 纤程 fiber 相当于用户级别的线程或轻进程 纤程由Win32库函数支持 对核心是不可见的 纤程可以通过SwitchToFiber显示至另一合作纤程 以实现合作纤程之间的协同 纤
  • STM32程序下载的三种方式

    今天介绍下载STM32程序的三种方式 1 J Flash下载 需要用到J link J Flash 2 MDK配置下载 需要用到J link ST link keil 3 ISP下载 需要用到FlyMcu 串口线 上面提到的硬件和软件图片如
  • 20230802-下载并安装android-studio

    下载 android studio 安装包 https developer android google cn studio 安装android studio 双击安装包 D Android Studio
  • 6.统计累积访问次数

    文章目录 核心思路 核心思路 使用窗口函数sum xx over patition by yy order by zz 当sum窗口函数没有order by时 得到的是分组后的指定列值的总和 有order by时 则是指定列值的前缀累加和
  • c++析构函数后加上virtual的原因

    c 析构函数后加上virtual的原因 虚函数 指向基类的指针在操作它的多态类对象时 会根据不同的类对象 调用其相应的函数 实现动态绑定 C 析构函数加上virtual是为了防止内存泄漏 假设基类中采用的是非虚析构函数 当删除基类指针指向的
  • QT 在主机默认PDF查看应用中打开PDF文档(如通过菜单栏打开使用手册)

    QT 在主机默认PDF查看应用中打开PDF文档 如通过菜单栏打开使用手册 前言 在软件制作完成后 我们都需要告诉用户如何使用软件 使用手册 是一个非常必要的输出文件 能够让用户自行了解软件的使用方法 我观察到很多上位机会在菜单栏中加入打开使
  • numpy输出到屏幕时有逗号和没逗号的原因

    问题起源 输出一个数组 没有逗号 让我感到质疑是不是Numpy array格式 本质一个是print 一个没有用print
  • txt数据转换成json数据保存

    txt数据 小王 19 小李 20 小陈 21 js代码 初始化 const fs require fs const path require path 读取txt文档的数据 fs readFile path join dirname a
  • QDir::currentPath() 和 QApplication::applicationDirPath() 区别和用法

    1 QDir currentPath 的使用 我的理解 若在vs2010平台下 该函数返回的是 工作目录 属性 调试 工作目录 可自定义 Qt5 8 原文 Returns the absolute path of the applicati
  • 【数据结构】记录

    栈 堆 树 前序遍历 中序遍历 二叉树 搜索二叉树 二叉查找树 二叉查找树 BST Binary Search Tree 是一种特殊的二叉树 它改善了二叉树节点查找的效率 二叉查找树有以下性质 对于任意一个节点 n 其左子树 left su
  • Mac 配置selenium连接chrome

    输入chrome version 查看chrome版本 如图为87 0 4280 88 到网址http chromedriver storage googleapis com index html 上下载适合自己的版本 我需要下载的是87
  • Python Selenium库的使用

    一 Selenium基础 入门教程 Selenium官网教程 1 Selenium简介 Selenium是一个用于测试网站的自动化测试工具 支持各种浏览器包括Chrome Firefox Safari等主流界面浏览器 同时也支持phanto
  • Qt TCP 网络通信01

    概念 windows 和 Linux 套接字相似 局域网和广域网 局域网 将一定区域内各种计算机 外部通信设备和数据库连接起来形成计算机通信的私有网络 广域网 又称广域网 外网 公网 是连接不同地区局域网或城域网的远程公共网络 TCP UD
  • FPAG的上电配置的3种方法

    目前 大多数FPGA芯片是基于SRAM 的结构的 而 SRAM 单元中的数据掉电就会丢失 因此系统上电后 必须要由配置电路将正确的配置数据加载到 SRAM 中 此后 FPGA 才能够正常的运行 常见的配置芯片有EPCS 芯片 EPCS4 E
  • 【图解HTTP】(二)IP、TCP和DNS

    图解HTTP 二 IP TCP和DNS 一 负责传输的IP协议 二 确保可靠性的TCP协议 三 负责域名解析的DNS服务器 四 IP TCP和DNS三者与HTTP的关系 一 负责传输的IP协议 IP协议 即Internet Protocol