【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

这篇具有很好参考价值的文章主要介绍了【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

 ( 该图由AI制作 )

目录

包的基本知识

包收发操作概览

生成包含接收方 IP 地址的 IP 头部

生成以太网用的 MAC 头部

通过 ARP 查询目标路由器的 MAC 地址

以太网的基本知识

将 IP 包转换成电或光信号发送出去

给网络包再加 3 个控制数据

向集线器发送网络包

接收返回包

将服务器的响应包从 IP 传递给 TCP


TCP 模块在执行连接收发断开等各阶段操作时都需要委托 IP 模块将数据封装成包发送给通信对象

包的基本知识

包是由头部和数据两部分构成的 (a ))

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

 

头部包含目的地址等控制信息 (理解为:快递单)
头部后面就是委托方要发送给对方的数据 (理解为:快递本体)

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

发送方的网络设备会负责创建包创建包的过程就是生成含有正确控制信息的头部,然后再附加上要发送的数据)

包会被发往最近的网络转发设备

转发设备会根据头部中的信息判断接下来应该发往哪里
这个过程需要用到一张表,这张表里面记录了每一个地址对应的发送方向,也就是按照头部里记录的目的地址 在表里进行查询,并根据查到的信息判断接下来应该发往哪个方向
我们把发送方和接收方统称为终端节点
相应地,转发设备被称为转发节点或者中间节点
具体来说 如图 (b 所示 TCP/IP 包包含如下两个头部

我把图再拿下来一遍

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

(a MAC 头部 用于以太网协议
b IP 头部 用于 IP 协议
这两个头部分别具有不同的作用

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

首先 发送方将包的 目的地 也就 是要访问的服务器的 IP 地址写入 IP 头部
IP 协议就可以根据这一地址查找包的传输方向 从而找到下一个路由器的位置(路由器 R1)
IP 协议会委托以太网协议将包传输过去
这时,IP 协议会查找下一个路由器的以太网地址(MAC 地址),并将这个地址写入 MAC 头部中
这样一来,以太网协议就知道要将这个包发到哪一个路由器上了。
网络包在传输过程中 会经过集线器
集线器是根据以太网协议工作的设备 为了判断包接下来应该向什么地方传输 集线器里有 一张表 用于以太网协议的表 ), 可根据以太网头部中记录的目的地信息查 出相应的传输方向
包会到达下一个路由器(图②)
路由器中有一张 IP 协议的表 可根据这张表以及 IP 头部中记录的目的地信息查出接下来应该发 往哪个路由器 为了将包发到下一个路由器 我们还需要查出下一个路由 器的 MAC 地址 并记录到 MAC 头部中

就是在 TCP/IP 网络中一个网络包从出发到到达目的地的全过程

IP 和以太网的分工
其中以太网的部分也可以替换成其他的东西:无线局域网 ADSL FTTH
它们都可以替代以太网的角色帮助 IP 协议来传输网络包
IP 和负责传输的网络分开 可以更好地根据需要使用各种通信技术

包收发操作概览

在协议栈中 IP 模块是如何完成包收发操作的
将包从发送方传输到接收方的工作是由集线器 路由器等网络设备来完成的
IP模块仅仅是整个包传输过程的入口而已

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

包收发操作的起点是 TCP 模块委托 IP 模块发送包的操作(图1)

这个委托的过程就是 TCP 模块在数据块的前面加上 TCP 头部然后整个传递给 IP 模块,这部分就是网络包的内容

与此同时, TCP 模块还需要指定通信对象的 IP 地址 也就是需要写清楚 将什么内 容发给谁 ”。
IP 模块会将包的内容当作一整块数据 在前面加上包含 控制信息的头部 刚才我们讲过 IP 模块会添加 IP 头部和 MAC 头部这两 种头部 IP 头部中包含 IP 协议规定的 根据 IP 地址将包发往目的地所需 的控制信息 MAC 头部包含通过以太网的局域网将包传输至最近的路由器所需的控制信息
关于 IP 头部和 MAC 头部的区别以及其中包含的控制信息的含义 我们将稍后介绍 总之 加上这两个头部之后 一个包就封装 好了 这些就是 IP 模块负责的工作
IP 模块负责添加如下两个头部。
(1) MAC 头部:以太网用的头部,包含 MAC 地址
(2) IP 头部:IP 用的头部,包含 IP 地址
接下来, 封装好的包会被交给网络硬件 ②发送”)如以太网 无线局域网等
网络硬件可能是插在计算机主板上的板卡,也可能是笔记本电脑上的 PCMCIA 卡,或者是计算机主板上集成的芯片,不同形态的硬件名字也不一样,我们将它们统称为网卡
传递给网卡的网络包是由一连串 0 1 组成的数字信息 网卡会将这些数字信息转换为电信 号或光信号 并通过网线 或光纤 发送出去 然后这些信号就会到达集线 路由器等转发设备 再由转发设备一步一步地送达接收方
包送达对方之后,对方会作出响应。返回的包也会通过转发设备发送回来,然后我们需要接收这个包
接收的过程和发送的过程是相反的 信息先以电信号的形式从网线传输进来 然后由网卡将其转换为数字信息并 传递给 IP 模块 ③接收 ”)。 接下来 IP 模块会将 MAC 头部 IP 头部后面的内容 也就是 TCP 头部加上数据块 传递给 TCP 模块
在这个过程中,有几个关键的点
无论要收发的包是控制包还是数据包,IP 对各种类型的包的收发操作都是相同的。

生成包含接收方 IP 地址的 IP 头部

下面来看一看 IP 模块的具体工作过程
IP 模块接受 TCP 模块的委托, 负责包的收发工作 它会生成 IP 头部,并附加在 TCP 头部前面
IP 头部包 含的内容如表 所示

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

其中最重要的内容就是 IP 地址。它表示这个包应该发到哪里去这个地址是由 TCP 模块告知的,而 TCP 又是在执行连接操作时从应用程序那里获得这个地址的,因此这个地址的最初来源就是应用程序。

IP 头部中还需要填写发送方的 IP 地址 大家可以认为是发送方计算机的 IP 地址
IP 头部的“接收方 IP 地址”填写通信对象的 IP 地址。发送方 IP 地址需要判断发送所使用的网卡,并填写该网卡的 IP 地址。
但如果计算机上有多个网卡 如何判断应该把包交给哪块网卡呢?

答:与路由器使用 IP 表判断下一个路由器位置的操作是一样的。因为协议栈的 IP模块,与路由器中,负责,包收发的部分,都是根据 IP 协议规则,来进行包收发操作的,所以它们也都用相同的方法,来判断,把包发送给谁。

这个 IP 叫作路由表

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

 

首先 我们对套接字中记录的目的地 IP 地址与路由表左侧的 Network Destination 栏进行比较
例如,TCP 模块告知的目标 IP 地址为 192.168.1.21,那么就对应
图中的第 6 行,因为它和 192.168.1 的部分相匹配。
如果目标 IP 地址为 10.10.1.166,那么就和 10.10.1 的部分相匹配,所以对应第 3 行。
以此类 我们需要找到与 IP 地址左边部分相匹配的条目
接下来看从右边数第 2 列和第 3 列的内容
Interface 列 表示网卡等网络接口( 也叫网络掩码:用来判断 IP 地址中网络号与主机号分界线的值 )这些网络接口可以将包发送给通信对
Gateway (网关) 列表示下一个路由器的 IP 地址 将包 发给这个 IP 地址 该地址对应的路由器 就会将包转发到目标地址

路由表的第 1 行中,目标地址和子网掩码都是 0.0.0.0这表示默认网关如果其他所有条目都无法匹配就会自动匹配这一行

这样一来 我们就可以判断出应该使用哪块网卡来发送包了
可以在 IP 头部,的发送方 IP 地址中,填上这块网卡对应的 IP 地址

生成以太网用的 MAC 头部

生成了 IP 头部之后 接下来 IP 模块还需要在 IP 头部的前面加上MAC 头部

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

 

IP 头部中的接收方 IP 地址,表示网络包的,目的地 通过这个地址,我们就可以判断,要将包发到哪里
但在以太网的世界中 TCP/IP 的这个思路,是行不通的
以太网,在判断,网络包目的地时,和 TCP/IP 的方式不同 因此必须采用,相匹配的方式,才能在以太网中,将包发往目的地 MAC 头部,就是干这个用的
IP 模块,在生成 IP 头部之后 会在它前面,再加上 MAC 头部 MAC 头部是以太网使用的头部 它包含了接收方和发送方的 MAC 地址等信息
MAC头部的相关知识
MAC 头部的开头是接收方和发送方的 MAC 地址 大家可以认为它们和 IP 头部中的接收方和 发送方 IP 地址的功能差不多
3 个以太类型字段和 IP 头部中的协议号类似
IP 协议号表示 IP 头部后面的包内容的类型 而在以太网中 我们可以认为以太网类型后面就是以太网包的内 而以太类型就表示后面内容的类型
在生成 MAC 头部时,只要设置表中的 3 个字段就可以了
首先是 以太类型 ”, 这里填写表示 IP 协议的值 0800
接下来是 发送方 MAC 地址 里填写网卡本身的 MAC 地址 (MAC 地址是在网卡生产时写入 ROM 里)
而接收方 MAC 地址:需要进一步查询
查一下路由表就知道了。在路由表中找到相匹配的条目,然后把包发给 Gateway 列中的IP 地址就可以了,既然已经知道了包应该发给谁,那么只要将对方的 MAC 地址填上去就好了,但到这里为止根本没有出现对方的 MAC 地址,也就是说我们现在根本不知道对方的 MAC 地址是什么。因此,我们需要执行根据 IP 地址查询 MAC 地址的操作。

通过 ARP 查询目标路由器的 MAC 地址

在以太网中 有一种叫作广播的方法 可以把包发给连接在同一以太网中的所有设备
ARP 就是利 用广播对所有设备提问 :“×× 这个 IP 地址是谁的 请把你的 MAC 地址 告诉我 。”
然后就会有人回答 :“ 这个 IP 地址是我的 我的 MAC 地址是××××。”

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

如果对方和自己处于同一个子网中 那么通过上面的操作就可以得到对方的 MAC 地址 然后 我们将这个 MAC 地址写入 MAC 头部 MAC 头部就完成了

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

 MAC 头部加在 IP 头部的前面整个包就完成了

以太网的基本知识

完成 IP 模块的工作之后 下面就该轮到网卡了 不过在此之前 我们先来了解一些以太网的基本知识
以太网是一种为多台计算机能够彼此自由和廉价地相互通信而设计的通信技术,
它的原型如图 (a 所示

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

 

当一台计算机发送信号时 ,信号就会通过网线流过整个网络 最终到达所有的设备
网络中任何一台设备发送的信号所有设备都能接收到
我们无法判 断一个信号到底是发给谁的 因此需要在信号的开头加上接收者的信息
为了控制这一操作 我们就需要使用表 2.3 中列出的 MAC 通过 MAC 头部中的接收方 MAC 地址 就能够知道包是发给谁的
尽管以太网经历了数次变迁,但其基本的 3 个性质至今仍未改变,
  1. 即:将包发送到 MAC 头部的接收方 MAC 地址代表的目的地
  2. 用发送方 MAC 地址识别发送方
  3. 用以太类型识别包的内容
因此 大家可以认为具备这 3 个性质的网络就是以太网

将 IP 包转换成电或光信号发送出去

下面来看看以太网的包收发操作
我们需要将数字信息转换为电或光信号 才能在网线上传输
负责执行这一操作的是网卡

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

这是一张网卡主要构成要素的概念图 并不代表硬件的实际结构
网卡的初始化过程
网卡驱动程序会对硬件进行初始化操作
网卡的 ROM 中保存着全世界唯一的 MAC 地址,这是在生产网卡时写入的
网卡中保存的 MAC 地址会由网卡驱动程序读取并分配给 MAC模块

给网络包再加 3 个控制数据

看网卡是如何将包转换成电信号并发送到网线中的
网卡驱动从 IP 模块获取包之后 会将其复制到,网卡内的缓冲区中 然后向
MAC 模块,发送, 发送包 ,的命令 接下来就轮到 MAC 模块进行工作了
MAC 模块会将包从缓冲区中取出 并在开头加上报头和起始帧分界符 在末尾加上用于检测错误的帧校验序列

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作文章来源地址https://www.toymoban.com/news/detail-502160.html

报头是一串像 10101010这样 1 0 交替出现的比特序列

它的作用是确定包的读取时机
当这些 1010 的比特序列被转换成电信号后,会形成如图这样的波形

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

用电信号来表达数字信息时 我们需要让 0 1 两种比特分别对应特定的电压和电流 例如图 a 这样的电信号就可以表达数字信息

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

这里暂时略过

向集线器发送网络包

加上报头 起始帧分界符和 FCS 之后 我们就可以将包通过网线发送出去了

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

发送信号的操作分为两种 一种是使用集线器的半双工模式 另一种是使用交换机的全双工 模式

接收返回包

网卡将包转换为电信号并发送出去的过程到这里就结束了 既然讲到了以太网的工作方式 那我们不妨继续看看接收网络包时的操作过程

将服务器的响应包从 IP 传递给 TCP

到了这里,关于【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络【IP协议与以太网】

    ● 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4 ●4位头部长度(header length):IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节 ●8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TO

    2024年02月02日
    浏览(41)
  • 欧姆龙以太网模块如何设置ip连接 Kepware opc步骤

    在数字化和自动化的今天,PLC在工业控制领域的作用日益重要。然而,PLC通讯口的有限资源成为了困扰工程师们的问题。为了解决这一问题,捷米特推出了JM-ETH-CP转以太网模块,让即插即用的以太网通讯成为可能,不仅有效利用了PLC的通讯资源,还提高了数据传输的效率和稳

    2024年02月16日
    浏览(65)
  • 【好书精读】网络是怎样连接的 之 数据收发完成之后 从服务器断开并删除套接字

     ( 该图由AI制作 ) 目录 数据收发完成后协议栈要执行的操作 数据发送完毕后断开连接 删除套接字 数据收发操作小结 第一步是创建套接字 然后 客户端会向服务器发起连接操作 数据收发阶段 执行断开操作 前面讲了: 创建套接字到连接 、 收发数据 、 断开连接 、 今天讲

    2024年02月10日
    浏览(48)
  • 【计算机网络】 IP协议格式以及以太网帧结构

    IP工作在网络层 IP头分为两部分,固定部分和可变部分,固定部分就是一定要带这些数据,正常存储应该是连续的,并不是像图中这样会换行,图中只是为了方便观察。 首先是一个版本号,也就是看是ipv4还是ipv6,然后是首部长度,就是我们ip头的首部长度,是为了能将首部和

    2024年02月09日
    浏览(46)
  • 计算机网络:网络适配器(网关),IP,以太网 VMware 的详细讲解

    前言 有很多人对于网关,ip,以及VMware网络的概念以及配置不太了解,本篇就对于这几个进行介绍 ipconfig/all(win+R–cmd–ipconfig/all)最常用的就是显示自己主机的ip了,可以让我们了解自己的计算机是否成功的租用到一个IP地址。但是ipconfig显示的除了当前主机网络ip之外还有

    2024年02月09日
    浏览(64)
  • Emulex为全新QCT OCP网络提供高性能以太网连接

    OCP概念 OCP:Oracle数据库认证专家(Oracle Certified Professional)是Oracle公司的Oracle数据库DBA(Database Administrator 数据库管理员)认证课程,通过这个考试, 说明此人可以管理大型数据库, 或者能够开发可以部署到整个企业的强大应用。要成为OCP需要先获得OCA (Oracle数据库认证助理

    2024年02月07日
    浏览(37)
  • [计算机网络实验]头歌 实验二 以太网帧、IP报文分析(含部分分析)

    目录 第1关:Wireshark基本使用入门 【实验目的】 【实验环境】 【本地主机、平台虚拟机之间数据传递】 wireshark基本用法】 1、wireshark主界面 2、抓取分组操作 3、Wireshark窗口功能 4、筛选分组操作 【实验操作】 ​编辑 第2关:Ethernet帧分析 【以太网帧格式】 1、Ethernet II帧格式

    2024年02月05日
    浏览(38)
  • TCP/IP网络参考模型(端口号、TCP滑动窗口、TCP拥塞控制、IP协议号、以太网帧)

    目录 TCP/IP四/五层模型 应用层常见协议——传输数据PDU 传输层协议——传输数据段 端口号 TCP面向连接服务CONS  TCP报文格式 TCP数据传输——ACK确认机制 TCP会话建立——三次握手 TCP会话结束——四次握手 TCP流量控制——滑动窗口协议 TCP可靠传输机制 TCP拥塞控制 UDP无面向连

    2024年02月03日
    浏览(48)
  • 网络协议格式 | 以太网帧、ARP数据报、IP数据报、UDP数据报、TCP数据报

    欢迎关注博主 Mindtechnist 或加入【Linux C/C++/Python社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。 专栏:《网络编程》 传输层及其以下的机制由内

    2024年01月16日
    浏览(45)
  • 【Linux踩坑日记】:ubuntu环境下Linux系统没有网络连接,ifconfig查看发现只有lo,没有以太网eth0连接解决方法

    启动Linux系统后,发现网络无法连接,输入 ifconfig 命令查看,只有lo本地回环网卡,无法找到eth0网卡,或者是eht0网卡成功激活但是没有显示IP及子网掩码。如下图所示: 输入 ifconfig -a 命令查看是有eth0这张网卡的。 输入以下两条命令: 我的网卡名字是eth0,可通过 ifconfig -a

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包