linux查看网络下一跳,网络分层结构及TCP通信基础和下一跳机制
网络4层协议
应用层(http,ssh,整合了表示层和会话层);
传输控制层(tcp面向连接三次握手四次挥手,udp面向报文);
网络层(ip下一跳);
数据链路层(mac节点);
物理层(交换机、光纤).
linux中测试
cd /proc/$$/fd
ll
# 建立连接
# 必须要8
exec 8<> /dev/tcp/www.baidu.com/80
ll
# 发送数据
# >& 表示重定向的是文件描述符(> 文件)
echo -e 'GET / HTTP/1.0/\n' >& 8
# 接收数据
# 同 >&
cat 0
# 关闭连接
# 关闭文件描述符
exec 8
三次握手四次挥手(tcp最小粒度)及arp
通常最后一次握手时在client发送确认包给server时就带上了数据(此时已经确认对方io可用,默认己方io可用)
确认一个唯一的通信连接资源的四元组:对方ip:port-己方ip:port
#查看本机建立的连接
netstat -natp
#查看网卡
cat /etc/sysconfig/network-scripts/ifcfg-eth0
#查看路由表
route -n
#arp协议查看数据链路表
arp -a
#网络接口配置
ifconfig
arp协议在家用交换机中的应用
源ip和mac为自己,目标ip为某个ip(如网关172.27.0.1),目标mac为FFFFFF
当交换机收到数据包后,遇到全F的mac则在局域网中进行广播
当不是172.27.0.1的计算机收到包后会丢弃,如是172.27.0.1则会响应
交换机收到响应后记下mac以用于下一次收到同一个目标的arp时不广播
最后修改arp包的目标mac地址回给源ip所在mac的设备
发包者记下目标ip的mac地址(如网关)
下一跳(网络层)
所有目标网络和掩码做按位与得到某个目标网络即将数据包发送给该目标网络的网关
[root@VM-0-8-centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.27.0.1 0.0.0.0 UG 100 0 0 eth0
172.27.0.0 0.0.0.0 255.255.240.0 U 100 0 0 eth0
[root@VM-0-8-centos ~]# arp -a
_gateway (172.27.0.1) at fe:ee:32:07:ea:07 [ether] on eth0
如ping 127.27.0.2(同一局域网)
在表中和Genmask进行与运算后和Destination172.27.0.0匹配
替将数据包发送到Gateway0.0.0.0 (自己,不发,回环)
再和Genmask进行运算后和Genmask0.0.0.0匹配
将数据包发送到Gateway172.27.0.1所在的设备
172.27.0.1先将数据包套一层在其本地路由表记下(同一局域网)来时mac地址(数据链路层)以保证原路返回,同时改变源mac为自己但不改变源ip以继续下一跳的步骤并找到最终目标(如果涉及到NAT网络地址转换则会留下网络地址转换记录,通常路由器自带的交换机都使用动态NAT,详细记录在NAT和DR及LVS笔记中)
将数据包发送到匹配的网关ip对应mac地址的设备
进入下一个网络重复这个步骤查到目标地址
再如ping 14.215.177.38(非同一局域网)
14.215.177.38 | 255.255.240.0 != 172.27.0.0 匹配失败
14.215.177.38 | 0.0.0.0 == 0.0.0.0 =》172.27.0.1 =》下一网络
重复此步骤直到找到14.215.177.38
结论
TCP/IP协议(传输控制层)
下一跳机制(网络层(IP互联网端点间通信))(数据链路层(MAC同一局域网节点间通信))
关系
源端目标端口 (应用)
源IP目标IP (网络)
源MAC目标MAC (链路)
linux查看网络下一跳,网络分层结构及TCP通信基础和下一跳机制相关推荐
- linux查看磁盘IO,网络IO 总结
linux查看磁盘IO,网络 IO可用的命令 1. top 监控整体服务器,cpu,内存,磁盘,网络等 2. dstat -d 查看当前磁盘每秒的读取,写入量,单位K 3. dstat -r 查 ...
- linux查看IP地址、网络端口的命令
转载于:https://my.oschina.net/u/3891918/blog/2243557
- 【计算机网络】前后端分离,HTTP协议,网络分层结构,TCP,强缓存/协商缓存
❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客
- linux查看lun对应的硬盘,手把手教你在不同操作系统下如何识别存储磁盘LUN,如何管理磁盘LUN。...
一.在LINUX系统下如何识别存储磁盘LUN,如何管理LUN. 1.Netapp 创建一个3774 MB 的linux lun,需要重启linux系统才能认到盘符.(如何使用裸映射功能点击此处) 2. ...
- Linux 网络设备驱动开发(一) —— linux内核网络分层结构
Linux内核对网络驱动程序使用统一的接口,并且对于网络设备采用面向对象的思想设计. Linux内核采用分层结构处理网络数据包.分层结构与网络协议的结构匹配,既能简化数据包处理流程,又便于扩展和维护. ...
- IOT-OS之RT-Thread(十三)--- 网络分层结构 + netdev/SAL原理
文章目录 一.网络分层结构 二.RT-Thread网络分层结构 2.1 ENC28J60设备驱动层 2.2 设备无关接口层netdev 2.3 网络协议层LwIP 2.4 协议无关接口层SAL 2.5 ...
- linux查看端口物理状态,Linux查看端口使用状态及启动
LINUX网络性能之管理工具三剑客 本文是介绍管理Linux查看端口这些输出信息,该命令将显示从每个数据包传出的头和来自主机hostname对端口80的编址. Netstat -tln 命令是Linu ...
- 网络参考模型(OSI七层模型、TCP/IP五层和四层模型)
目录 一.简介 二.相关概念 三.名词解释 3.1.IP 3.2.TCP 3.3.UDP 3.4.ICMP 3.5.通讯端口 3.6.数据格式 3.7.IPV4与IPV6 四.网络参考模型 4.1.O ...
- linux有端口找不到进程,linux查看端口和进程
查看进程 ps -aux | grep appname 杀死进程 kill pid 查看端口: netstat -ap | grep 端口号 netstat -ap | grep 进程名字 lsof ...
最新文章
- 海归技术大佬:硅谷科技公司到底牛在哪里?讲透“奈飞文化”8个原则!
- Android程序设计基础
- 经典网页设计:10个响应式设计的国外购物网站
- php不能显示验证码
- 关于vector的迭代器失效的问题
- 面向B端算法实时业务支撑的工程实践
- 配置MySQL的环境变量
- 】.NET使用NPOI组件将数据导出Excel
- 视觉的力量,如何利用视频和社交媒体讲述品牌故事
- 如何让“后浪”热爱工作,来自“前浪”的十大拷问
- 强网杯2022 crypto 复现
- 程序集(dll) 安装到 GAC 程序集添加到VS引用开窗(转)
- android intent传文件,android如何用intent跳转到文件管理器
- JAVA工具类——身份证校验
- 高质量 Go 进阶图书,它来了
- 区块链授权的5G异构网络安全频谱共享
- 世界史上最成功的12大王朝 中国占两个。
- 披着数据分析师的外衣,干着鱼龙混杂的活
- fiery服务器系统安装,fiery服务器打印设置
- clickhouse 数据TTL使用
热门文章
- 手动实现C++容器vector的clear操作
- 关于算法笔试的几个套路,一点就透
- android 使用iphone线控耳机,苹果耳机/earpods可以用线控控制安卓手机吗?
- 报错解决:form表单提交存入数据库出现中文乱码
- ant design vue的ApiSelect选择器使用注意点
- 指令集与左岸芯慧正式启动“中国农业智能操作系统”共建
- SharePoint Silverlight Clock 时钟
- 知名硅谷黑客当街被刺身亡!年仅43岁,马斯克都怒了
- [每天进步一点点~] uni-app 安装配置安卓手机模拟器
- BlackBerry 软件全球现已部署超过2.15亿辆汽车