当前位置: 首页 > news >正文

TCP、IP、ARP协议之间的工作关系

TCP协议与ARP协议位于不同的层,不能用“并列”的思维来考虑。TCP位于传输层,而ARP工作在网络层(也有说法是数据链路层,主要看怎么理解),但实际上掌管网络层的大boss是IP协议,ARP协议用于实现IP地址向MAC地址的转换,不过是个跑龙套的。

除此之外,网络层想要把数据发出去还要依靠数据链路层,在局域网中,数据链路层和之下的物理层最常见的莫过于802.3协议栈了,也就是大名鼎鼎的以太网

 

802.3/以太网并不是一个协议,也不是一个分层。它是对局域网内部通信的一个实现标准,囊括了从物理层到链路层的一坨协议。以下简单使用“802.3”来代表802.3中链路层及以下负责数据传送的协议集

 

在网络分层模型中,下层要为上层提供服务,而上层的一切行动都要靠下层们为它跑腿。打个简单的比方,TCP就好比是老板,而IP是项目主管,ARP和802.3则是为以上二位跑腿的小员工。现在老板TCP想要向外发送一个SYN请柬。以下是大致剧情……

-----------------------------------------------------------------------------------------------------------------------------------------

TCP:IP你过来,我现在要给“destinationIP”发送一个SYN请柬,请柬我已经写好了,剩下的就交给你了,限你n秒之内给我回话!(老板任性地走了……)。

IP拿到请柬后用信封封好,写上自己的IP地址接收方的IP地址。然后将自己的网络号与destinationIP对比:
1. 刚好在同一个网段,心想目标就在我们小区内(局域网),这就好办了(跳至 --- #1 --- 处)。
2. IP一看不在同一个网段,心想不妙,只能求助收发室了(网关/路由器)(跳至 --- #2 --- 处)。

--- #1 ---
IP:ARP你过来,给我查查这个“destinationIP”的详细地址在哪(MAC地址)。

ARP:(翻了翻自己的笔记本(ARP缓存)没找到,他摇了摇头,接着打开了小区广播) “destinationIP”听到请回答,我需要你的详细地址。

过了一会ARP收到了一个回电,不出所料,destinationIP汇报了自己的MAC地址。ARP把MAC地址交给了IP。
跳至 --- #3 --- 处

--- #2 ---
IP:(把默认网关的IP地址指给ARP)这是收发室的IP,你给我查查它的详细地址(MAC地址)。

ARP翻开了自己的笔记本,很快找到了收发室的详细地址,并把MAC地址交给了IP,他庆幸这次不需要再打开小区广播扰民了~
跳至 --- #3 --- 处

--- #3 ---

IP:802.3你过来,我这里有一封写好的信你帮我送出去,MAC地址我已经帮你查好了。

最终,802.3按照得到的MAC屁颠屁颠地将信件送到收发室,并登记了自己的MAC地址。

此处省略n万字…… 结束~

-----------------------------------------------------------------------------------------------------------------------------------------

注意:
ARP协议是和以太网配套使用的,如果你的局域网的底层实现并不是以太网(比如令牌环网、HDDI等),那么你可能压根就不需要ARP请求!
从始至终,IP协议只处理与IP地址有关的部分;
ARP协议只处理查询MAC地址;
802.3链路层协议只负责MAC-MAC之间的实际传送;
这就是网络分层,各司其职。

===================================

最后,你问我TCP发出SYN请求和ARP广播谁先,当然是SYN请求在先了!但是如果没有ARP广播SYN请求还不是纸上谈兵?所以问谁先谁后是没有意义的,分清楚谁是boss、谁是小弟就好了。

转载于:https://www.cnblogs.com/itsad/p/8250503.html

相关文章:

  • 网上社区舆情舆论信息有效监测的技术解决方法
  • 文本溢出(单行、多行)
  • 网络舆情数据分析系统技术方案
  • 数据库连接池
  • 网络舆情风险点排查工作实施方案
  • 使用Properties配置文件 InputStream与FileReader (java)
  • 网络舆情早发现预警的系统技术办法
  • java中的float和double的精度问题
  • 大数据舆情监测分析工作如何有效做好的解决方案
  • 网络舆情数据挖掘分析的三点方法和建议
  • python3----冒泡排序
  • 网上新的热点舆情信息数据监测搜集系统方法
  • 总结一下各种居中(内联元素、块级元素、浮动元素、绝对定位元素)*(水平、垂直)...
  • 大数据舆情监测平台怎么选的方法
  • 集中式vs分布式
  • 时间复杂度分析经典问题——最大子序列和
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [NodeJS] 关于Buffer
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • git 常用命令
  • Java 多线程编程之:notify 和 wait 用法
  • LeetCode算法系列_0891_子序列宽度之和
  • Mybatis初体验
  • Netty源码解析1-Buffer
  • php中curl和soap方式请求服务超时问题
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • REST架构的思考
  • Spring核心 Bean的高级装配
  • tab.js分享及浏览器兼容性问题汇总
  • 百度小程序遇到的问题
  • 成为一名优秀的Developer的书单
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 模型微调
  • 排序(1):冒泡排序
  • 排序算法学习笔记
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 微信小程序--------语音识别(前端自己也能玩)
  • 再次简单明了总结flex布局,一看就懂...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​决定德拉瓦州地区版图的关键历史事件
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (11)MSP430F5529 定时器B
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (day 12)JavaScript学习笔记(数组3)
  • (附源码)springboot教学评价 毕业设计 641310
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)人的集合论——移山之道
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET简谈设计模式之(单件模式)
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)