【Linux网络协议栈开发】
玛丽奥ZJY
这个作者很懒,什么都没留下…
展开
-
Linux 网络协议栈开发基础篇(十二)—— 使用wireshark分析TCP/IP协议中TCP包头的格式
摘要:本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析。一、概述TCP是面向连接的可靠传输协议,两个进程互发数据之前需要建立连接,这里的连接只不过是端系统中分配的一些缓存和状态变量,中间的分组交换机不维护任何连接状态信息。连接建立整个过程如下(即三次握手协议):首先,客户机发送一个特殊的TCP报文段;其次,...转载 2018-03-21 09:29:38 · 283 阅读 · 0 评论 -
Linux 虚拟网络设备详解之 Bridge 网桥
前面几篇文章介绍了 tap/tun、veth-pair,今天这篇来看看 Bridge。转载:https://www.cnblogs.com/bakari/p/10529575.htmlBridge 是什么#同 tap/tun、veth-pair 一样,Bridge 也是一种虚拟网络设备,所以具备虚拟网络设备的所有特性,比如可以配置 IP、MAC 等。除此之外,Bridge 还是一个...转载 2019-07-23 16:48:35 · 936 阅读 · 0 评论 -
Linux内核bridge浅析
Linux内核bridge浅析 Linux网桥模型: Linux内核通过一个虚拟的网桥设备来实现桥接的,这个设备可以绑定若干个以太网接口设备,从而将它们桥接起来。如下图所示: 网桥设备br0绑定了eth0和eth1。对于网络协议栈的上层来说,只看得到br0,因为桥接是在数据链路层实现的,上层不需要关心桥接的细节。于是协议栈上层需要发送的报文被送到br0,网桥设备的处理代码再来判...转载 2019-07-23 16:47:15 · 723 阅读 · 0 评论 -
Linux 网络协议栈开发基础篇(七)—— 网桥br0
一、桥接的概念 简单来说,桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。 交换机就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。于是,与交换机相连的若干主机就能够通过交换机的报文转发而互相通信。 如下图:主机A发送的报文被送到交换机S1的eth0口,由于eth...转载 2018-04-13 17:16:00 · 1591 阅读 · 1 评论 -
Linux内核网络协议栈笔记
Linux内核网络协议栈笔记0:序言(附参考书籍)转自:http://www.th7.cn/system/lin/2011/08/11/18810.shtml自己是研究网络的,但实际上对Linux中网络协议栈的实现知之甚少。最近看完《深入理解Linux内核》前几章之后(特别是与网络子系统密切相关的软中断),觉得可以而且应该看一下网络协议栈了。这部分网上的文章大部分都没有什么结构和思路,很少有能够条...转载 2018-04-13 17:14:42 · 2491 阅读 · 0 评论 -
Linux 网络协议栈开发番外篇(三)—— ping命令执行过程详解
先看拓朴图: 在这里讲ping的两情况:一种是同一网段内,一种是跨网段的ping。一、同一网段内首先,如果主机A,要去ping主机B,那么主机A,就要封装二层报文,他会先查自己的MAC地址表,如果没有B的MAC地址,就会向外发送一个ARP广播包,如图: 其中ARP报文格式如下:其中OP 1:表示ARP请求 2:表示ARP应答 3:表示RARP请求 4:表示RARP应答 首先,交换机会收到这个报文后...转载 2018-04-13 17:02:47 · 756 阅读 · 0 评论 -
Linux 网络协议栈开发基础篇(三)—— TCP对比UDP
TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性,UDP可能丢包 6.TCP保证数据顺序,UDP不保证 UDP应用场景: 1.面向数据报方式 2.网络数据大多为短消息 3.拥有大量Client 4.对数据安全性无特殊要求 5.网...转载 2018-04-13 16:39:07 · 198 阅读 · 0 评论 -
Linux 网络协议栈开发番外篇(四)—— Wireshark-ICMP数据报分析
ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。 ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议,属于网络层协议。 ICMP报文是在IP数据报内被传输的。在实际传输中的数据包结构:20字节IP首部 + 8字节ICMP首部+ 1472字节<数据大小>3...转载 2018-04-13 16:32:37 · 241 阅读 · 0 评论 -
Linux 网络协议栈开发基础篇(十三)——TCP/IP协议各报文头格式
一、TCP报文 TCP是TCP/IP体系中面向连接的运输层协议,提供全双工的和可靠交付的服务。TCP报文段的格式如下图所示源端口和目的端口:各占2个字节,是运输层与应用层的服务接口。序号:占4个字节。TCP连接传送的数据流中的每一个字节都被编上一个序号。首部中序号字段的值指的是本报文段所发送的数据的第一个字节的序号。确认号:占4个字节,是期望收到对方下一个报文段的数据的第一个字节的序号...转载 2018-04-13 15:55:30 · 287 阅读 · 0 评论 -
Linux 网络协议栈开发基础篇(二)—— TCP协议浅析
一、TCP 协议的作用互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。(图片说明:TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议。)最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(packet),解决了子网内部的点对点通信。(图片说明:以太网协议解决了局域网的点对点通信。)但是,以太网协议不能解决多个局域网如何互通,这由 IP 协议解决。...转载 2018-04-13 15:24:56 · 287 阅读 · 0 评论 -
Linux 网络协议栈开发基础篇(七)—— 网桥br0
一、桥接的概念 简单来说,桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。 交换机就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。于是,与交换机相连的若干主机就能够通过交换机的报文转发而互相通信。 如下图:主机A发送的报文被送到交换机S1的eth0口,由于eth0...转载 2018-04-16 16:00:14 · 2467 阅读 · 0 评论 -
Linux 网络协议栈开发基础篇(十)—— 组播(Multicast)基础
一、组播(Multicast)传输 在发送者和每一接收者之间实现点对多点网络连接。 如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。它提高了数据传送效率。减少了骨干网络出现拥塞的可能性。单播(unicast): 是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例...转载 2018-04-16 15:44:39 · 2980 阅读 · 1 评论 -
Linux 网络协议栈开发基础篇(四)—— IP协议补充协议ARP
1.学习ARP前要了解的内容建立TCP连接与ARP的关系应用接受用户提交的数据,触发TCP建立连接,TCP的第一个SYN报文通过connect函数到达IP层,IP层通过查询路由表: 如果目的IP和自己在同一个网段: 当IP层的ARP高速缓存表中存在目的IP对应的MAC地址时,则调用网络接口send函数(参数为IP Packet和目的MAC))将数据提交给网络接口,网络接口完成Ethernet ...转载 2018-04-16 15:38:19 · 251 阅读 · 0 评论 -
通信基础知识:192.168.1.1/24中/24的含义
最近在移植新版本代码,但发现在新版本软件中,居然找不到子网掩码这个参数。与旧版本软件不同的是,IP地址后面接了“/24”,类似192.168.1.1/24,但一直未去理会IP地址后面这个“/24”表示什么意思。通过跟踪代码发现,这个“/24”大有含义,于是上网搜索了下,不查不知道,一查发现这就是我在苦苦寻找的子网掩码!这是一种现在流行的子网掩码表示方法,这种表示方法很好计算子网络的规模。明...转载 2019-07-24 17:52:36 · 12523 阅读 · 0 评论