局域网设备与公网服务之间如何交互数据?
承接上文内核怎么帮程序建立连接的
抓包 tcp -nn -i eth0 port 80 or arp
抓包2类请求包 一个是百度80端口 另一个是arp请求
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-9/1633755149143-image.png)
开始listen监听
arp -d 192.168.150.2 && curl www.baidu.com
从arp表中删除指定条目 然后请求百度
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-9/1633755251313-1.jpg)
然后看tcpdump监听的内容
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-9/1633755343108-2.jpg)
这里就是熟悉的三次握手 数据传输 四次分手的过程需要注意的是在三次握手之前 有2个ARP协议的数据包
请求谁有192.168.150.2的MAC地址请告诉192.168.150.11这个地址别人就会告诉它这个IP地址在53:2b这个网卡上
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-9/1633755544579-image.png)
才开始走三次握手的过程
如果不带 -n: tcp -i eth0 port 80 or arp
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-9/1633755754806-3.jpg)
route不带-n
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-9/1633755810591-image.png)
带上-n 就会裸露这些数值
准备2台机器
node1
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-9/1633755991163-image.png)
node2
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-9/1633756016653-image.png)
这两个主机在同一局域网可以ping通 也不需要路由器
node1 ping node2
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-9/1633756058278-image.png)
在节点2上设置一个新的环回接口: ifconfig lo:22 192.168.168.88/24
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-9/1633757514989-image.png)
如果在node1上ping192.168.168.88 能否ping通?
拿着这地址和掩码(255.255.255.0)做与运算得到192.168.168.0和目的地址192.168.150.0 不一样 跳过第一个条目 匹配第二个条目 然后扔给了路由器192.168.150.2
这就是IPV4互联网下一跳机制但从网关192.168.150.2跳出去就回不来了
所以如果按照这种方式node1始终ping不通192.168.168.88
所以需要在路由表中添加一个条目
route add host 192.168.88.88 gw 192.168.150.12
添加一个主机 经过网关 到 你能ping通的192.168.150.12
这个条目是 只有 192.168.88.88才会走网关上面图片 路由表1 中第二个条目中是 所有不知道的都会走默认网关
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-10/1633831845914-image.png)
注意这个新增的条目对应的掩码地址是 255.255.255.255当192.168.88.88这个ip和这个掩码做与运算的时候得到的就是它自己 和 前面的目标地址一样 就转发给了192.168.150.12所以这个时候就通了
同一个局域网才会走网关 不再同一个局域网的不需要走网关 直接走交换机就可以出去
以上就是静态路由的过程
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-10/1633831962329-image.png)
再用下上篇文章画的图 串下整个过程
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-10/1633832422747-image.png)
1、用户空间程序http协议(文本)2、传输控制层 三次握手 传输数据 四次分手的过程3、数据包怎么出去的主机?网络层的路由选择规则以及下一条机制4、找到下一跳之后 数据包怎么给到下一跳的 是通过链路层的MAC地址切换的过程5、客户端这一侧 从上往下完成一个数据包 发出去 服务端完成数据包 回来 客户端再确认 两边开放资源给应用层6、应用层起线程起进程多路复用NIO即就需要关注IO模型了7、再之后就需要关注线程池的概念了
交换机和路由器区别
![](https://gitee.com/pingfanrenbiji/pictures/raw/master/2021-10-10/1633834134642-image.png)
交换机在拓扑图中用长方形表示路由表中x表示交换机是3层的 有路由表route交换机可以看到MAC地址路由器是网络层可以看到IP地址 所以交换机不能作为2个网络连接使用2个局域网连接的时候一定是路由表 里面添加一些路由条目从A网到B网一定会有转发规则家里的路由器是路由器和交换机合二为一的家里的路由器上面有4个接口可以接网线 插4台机器这是走的交换机交换机里面有一个线插的是路由器路由器上有2个接口 一个是交换机 一个是IP运营商交换机是走局域网的一个局域网至少具备三层 网络层、链路层、物理层
局域网设备与公网服务之间如何交互数据?相关推荐
- 微服务之间如何共享数据
由于服务拆分之后,各服务之间只负责自己相关的业务领域,但是对于整体系统来说,总会遇到跨服务共享一些数据的需求,比如 Customer Service 想调用 Payment Service 客户最近5 ...
- 【Android 开发】: Android客户端与服务端之间使用JSON交互数据。
在前面的两讲中,我们讲解了JSON数据格式的一些基本知识,以及做一些小Demo,这一讲我们在前面的基础上来做一个综合的可扩展的Demo,主要是针对Android客户端解析服务端传递过来的JSON数据. ...
- 跨云应用部署:在云存储服务之间复制文件
在上一篇中,我们介绍了如何使用云存储服务代替传统的共享存储设备.如果我们大量的使用了云存储服务,就不可避免的要在多个云存储服务之间复制.共享.迁移或者同步数据.这里说的多个云存储服务包括跨不同供应商的 ...
- 服务与服务之间的交互方式可以有多种,包括使用 dblink、接口和中间库等方式
服务与服务之间的交互方式可以有多种,包括使用 dblink.接口和中间库等方式. 对于哪种方式更好,需要根据具体情况进行选择. 1. dblink 方式 使用 dblink 方式,可以在数据库层面进行 ...
- 单体、集群、分布式、SOA、微服务之间的联系与区别
单体.分层架构.集群.分布式.SOA.微服务之间有什么联系和区别? 1.概念提出时间 单体 : 60.70年代 分层 : 20世纪80年代 集群: 1990年 分布式:1994年 SOA: 1996年 ...
- 物联网协议(设备到物联网服务)
物联网中的网络分为设备到设备的网络与设备到物联网服务的网络.其中,设备到物联网服务的网络通信协议有HTTP,Websocket,MQTT等. HTTP协议 HTTP(超文本传输协议)是一个负责 ...
- 关于ip地址 :局域网 广域网 ip 公网 私网 ipv6 ipv4的区别、hosts文件和DNS域名解析说明
以下笔记总结于B站硬件茶谈:https://www.bilibili.com/video/BV1DD4y127r4 1.ip地址说明 1.1 网络基本知识说明(局域网/广域网/ip地址) 场景分析:假 ...
- Part6:客户端和服务端信息交互模型
一.客户端和服务端信息交互模型 1.[问题]:什么是客户端和服务端? 客户端:可以向服务器发请求,并接收返回的内容进行处理 服务器端:能够接收客户端请求,并且把相关资源信息返回给客户端的 2.[面试题 ...
- 局域网设备发现之Bonjour协议
局域网设备发现之Bonjour协议 2016年09月28日 23:37:43 吴跃前 阅读数 14979 标签: 局域网 设备发现 Bonjour协议 mDNS协议 DNS-SD协议 更多 个人分类: ...
最新文章
- java gstripe_通过Stripe Connect进行交易
- MobileViT: 一种更小,更快,高精度的轻量级Transformer端侧网络架构(附代码实现)...
- 学vc,加油站(一)区域渐变
- Hadoop centos 6.5 配置
- SVN的标准目录结构:trunk、branches、tags
- Java并发编程—为什么wait/notify操作要先获取到锁?
- php webservice 上传,PHP实现WebService服务
- 将字符串中的指定字符全局替换
- mui组件 a 锚点定位(Demo案例演示)- 代码篇
- 混合移动应用中地图导航功能开发与应用
- 知云文献翻译打不开_沙拉查词—— 划线翻译的一股清流
- Python 汉字转拼音库 pypinyin, 附:汉字拼音转换工具
- 父母脾气暴躁对孩子有哪些影响
- 游戏开发学习路线图(2023最新版)建议收藏
- Python Flask Web教程001:Flask 简介
- 《黄帝内经.上古天真论》真人、至人、圣人、贤人
- 计算机科学与探索期刊审稿周期,计算机科学与探索期刊 从投稿到录用过程
- 警惕!最新勒索病毒incaseformat来袭!清除方法如下!
- 软件包应用分享|基于RT-Thread的百度语音识别(二)
- Detecting noop updates