[转]车小胖谈网络(基础篇):同一网段的主机如何通信
http://blog.sina.com.cn/s/blog_1533e35800102wyqd.html
http://blog.sina.com.cn/s/blog_1533e35800102wyqd.html
http://blog.sina.com.cn/s/blog_1533e35800102wyqd.html
最近读者反映文章还要普及一下基础知识,比如专业术语,比如网络包是如何从一台电脑发送出去,网络包如何到达目的地,又如何从目的地网卡接收到,再传输到应用程序。如果把专业术语单独拎出来,没有上下文,同学们一定会觉得很突兀、也很枯燥,所以我还是喜欢讲一个例子,在这个例子中用到的专业术语一一解释,今天我们来讲同一网段的两台电脑如何ping通对方,那第一个问题就来了。
Ping是什么?
操作系统里的一种小程序,可以用来检测两台主机的连通性,如果可以ping通,表示网络可达,否则,网络不可达,网络出故障,需要排错了。先来看一个例子,在主机10.0.0.2上ping主机10.0.0.3,从第一个图可以看出可以ping 通,发出4个echo request,返回对应的4个echo reply;第二个图可以看出全部的8个ping报文,第三个图可以看到具体的ping报文的怎么构成的。
同学们一定很好奇,ping 是如何生成这些ICMP报文的,那下一个问题又来了;
ping 10.0.0.3 -c 100 -f -l 1500
意思是发送100次、长度为1500字节、且不能分片ICMP Echo request。
00001010.00000000.00000000.00000011
11111111.11111111.11111111.00000000
00001010.00000000.00000000.00000000
所谓按位与运算,就是每一位比对,如果都是1得到的结果是1,否则为0。
那10.0.0.2 和10.0.0.3就属于同一网段,同一网段意味着在一个广播域里,ARP就是工作在广播模式下,那ARP又做些什么呢?
到这里栈有了所有的信息,包括二层以太网目的地址、三层IP目的地址,打包成一个ICMP包发送给网卡,怎么发?当然也是调用网卡驱动程序API,各位同学又看到了API,没错!下层提供给它上层的服务是通过API来实现的,这里相当于调用类似ethernet_send()接口函数,于是ICMP到达网卡。
3. 网卡计算整个以太网帧的校验和,四个字节长,放在以太网帧的最后,我们称之为CRC,然后把这个以太网帧从接口发送出去,为何要CRC?为了怕在传输过程中因为线路质量、或噪音引起数据的丢失或者改变,发送方计算一个CRC,覆盖范围为整个以太网帧,接收方收到一个帧,先把最后四个字节CRC拷贝出来,然后去掉CRC,再计算CRC,如果计算出的CRC和接收到的CRC一致,说明帧是完好的,可以接收,否则直接丢弃!好,现在ICMP已经发到网络上去了。
4. 10.0.0.3这台主机发现这个帧的目的地址和自己的一样,哦,这是我的地址,于是接收,步骤参见步骤三,网卡把这个帧放在自己的缓存,发一个CPU中断,意思是收到一个帧,需要您老人家照顾一下,于是TCP/IP栈把这个帧移到自己的缓存空间,交由ICMP进程来处理
5. ICMP进程分析这个ICMP echo 请求,生成了回答ICMP echo reply报文,然后…剩下的步骤和以上的雷同,就不再罗嗦了。
6. ICMP echo reply 到达10.0.0.2主机,然后ping把这个消息输出到屏幕,这就完成了同一网段主机的通信。
[转]车小胖谈网络(基础篇):同一网段的主机如何通信相关推荐
- 智能车浅谈——过程通道篇
文章目录 前言 过程通道 模拟量输入通道 模拟量输出通道 开关量输入/输出通道 小结 模拟信号的调理 信号放大电路 滤波限幅电路 开关量信号调理 信号转换电路 滤波电路 保护电路 触点消抖 光耦隔离 ...
- 智能车浅谈——控制规律篇
文章目录 前言 计算机控制系统 常用控制规律 PID控制 比例(P)控制器 比例积分(PI)控制器 比例积分微分(PID)控制 位置式PID 增量式PID 数字PID控制算法的改进 PID参数整定 小 ...
- 智能车浅谈——方向控制篇
文章目录 前言 自动控制理论 人工控制系统 自动控制 方向控制 典型环节对应 典型环节分析 给定环节与给定量 比较环节与偏差量 控制环节与控制量 执行机构 舵机 PWM技术 舵机中值及限幅 转向控制 ...
- 智能车浅谈——电机控制篇
文章目录 前言 运动控制系统 被控对象 执行机构 控制器 反馈环节 M法测速: T法测速 小结 直流调速系统 桥式可逆PWM变换器 (1)正向运行 (2)反向运行 总结 智能车系列文章汇总 前言 之前 ...
- IOS、安卓IM语音聊天开发初探部分心得——网络基础篇
今儿是个还债的日子,没错,承诺了许久的网络传输篇虽然没有千呼万唤,不过我还是厚着脸皮始出来,继上两篇文章总结了一下开发IM语音功能时所遇到的音频问题,而今天就让我们来看看这个让我们看似近在眼前,确始终 ...
- Python3 与 C# 网络编程之~ 网络基础篇
最新版本查看:https://www.cnblogs.com/dotnetcrazy/p/9919202.html 入门篇 官方文档:https://docs.python.org/3/library ...
- Bridge网络模式下Linux虚拟机和主机进行通信
我的VMware版本是8.0.3.其他版本的设置应该大致相同. 1.注意我们的网络模式是Bridge 2.我们的网卡设置 3.目标虚拟机(Linux)的IP 4.我的主机的IP地址 5.网络调试助手的 ...
- linux网络报文接收发送浅析_Docker容器网络-基础篇
Docker的技术依赖于Linux内核的虚拟化技术的发展,Docker使用到的网络技术有Network Namespace.Veth设备对.Iptables/Netfilter.网桥.路由等.接下来, ...
- docker 启动时指定需要绑定的网卡_Docker容器网络-基础篇
Docker的技术依赖于Linux内核的虚拟化技术的发展,Docker使用到的网络技术有Network Namespace.Veth设备对.Iptables/Netfilter.网桥.路由等.接下来, ...
最新文章
- xmind快速上手使用教程,提高工作效率
- 【Linux开发】linux设备驱动归纳总结(二):模块的相关基础概念
- [vue] 如何实现一个虚拟DOM?说说你的思路
- 招聘 | 大疆算法类未来大咖招聘
- SAP License:ERP系统license过期了怎么办?
- flex连接mysql_java与flex结合做的登陆(连接数据库)
- ubuntu 上搭建lanp环境
- yy神曲url解析php_用PHP如何实现解析抖音无水印视频
- 怎么把框架栏变颜色 html,如何修改easyui框架颜色,求指点_html/css_WEB-ITnose
- 企业微信本地测试环境搭建
- This inspection finds all usages of methods that have @since tag in their documentation.
- IT通过什么途径去美国工作?
- “数据源“SqlServer ”包含无法用于处理操作的 ImpersonationMode。不能与名称为“SqlServer ”的数据源进行连接。”
- html制作过程总结经验,网页基础制作教程:学习HTML经验总结
- HTML代码via浏览器logo,Via浏览器怎么定制首页 几步轻松完成
- 经纬度转换XY坐标,并计算距离
- 我司何晓磊续签立命馆大学的客座研究员
- 你不知道的Windows小技巧~~
- 斯坦福大学的产学研之路
- 亚马逊云科技与格雷西司,助力卡洛哈应对全球运营挑战