
文章插图
网络协议——TCP/IP协议简介:
TCP(传输控制协议)和 IP(网际协议)是两个独立且紧密结合的协议,负责管理和引导数据报文在 Internet上的传输 。二者使用专门的报文头定义每个报文的内容 。TCP 负责和远程主机的连接,IP负责寻址,使报文被送到其该去的地方 。
TCP/IP协议模型如下图所示:

文章插图
1.网络接口层
有时也称为数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡 。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节 。
【谈谈Linux网络协议以及网络栈结构】2.网络层
有时也称为互联网层,处理分组在网络中的活动,例如分组的选路 。在T C P / I P协议族中,网络层协议包括I P协议(网际协议),I C M P协议(I n t e r n e t互联网控制报文协议),以及I G M P协议(I n t e r n e t组管理协议) 。
3.传输层
主要为两台主机上的应用程序提供端到端的通信 。在 TCP/I P协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)
TCP为两台主机提供高可靠性的数据通信 。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等 。由于传输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节 。
UDP为应用层提供一种非常简单的服务 。它只是把称为数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端 。任何必需的可靠性必须由应用层来提供 。
4.应用层
负责处理特定的应用程序细节
几乎各种不同的 T C P / I P实现都会提供下面这些通用的应用程序:
Telnet 远程登录 。
FTP 文件传输协议 。
SMTP 简单邮件传送协议 。
SNMP 简单网络管理协议 。
5.各层主要协议

文章插图
6. OSI 模型和 TCP/IP 模型的区别
6.1类似之处
均为层次结构
存在可比的传输层和网络层
均有应用层,但其所提供的服务有所不同
均是一种基于协议数据单元的包交换网络
作为概念上的模型和事实上的标准,具有同等的重要性
6.2不同之处
OSI 模型包括了 7 层,而 TCP/IP 模型只有 4 层 。TCP/IP 模型将表示层与会话层包含到了应用层中去完成 。另外,TCP/IP模型还将 OSI的数据链路层和物理层包括到了一个网络接口层中 。
OSI 参考模型在网络层支持无连接和面向连接的两种服务,而在传输层仅支持面向连接的服务 。TCP/IP 模型在网络层则只支持无连接的一种服务,但在传输层支持面向连接和无连接两种服务 。
TCP/IP由于有较少的层次,更为简单

文章插图
协议栈结构的说明1、 驱动中,使用ISR/POLL/NAPI等方式从硬件收包
2、 收包接口中通过netif_receive_skb()上交协议栈
3、 在netif_receive_skb()函数中做协议解析
core/dev.c中,为报文处理的第二层,用于分离收到的以太网报文的协议类型,同我们某产品上一个叫做Packet Handler模块一样,逐级分发报文 。
该模块有一个list_head链表,链表上挂了很多packet_type数据结构,packet_type数据结构中包括ether_type, dev指针以及func指针等成员 。
为加快对报文的分发速度,这个链表实现成了一个HASH表,共16way,使用ethertype作为索引 。
内核中常注册的ethertype类型:
ETH_P_IP
ETH_P_ARP
ETH_P_HDLC
ETH_P_DEC
ETH_P_PPP
PKT_TYPE_LACPDU
ETH_P_PPP_SES
ETH_P_PPP_DISC
ETH_P_BPQ
ETH_P_PARP
ETH_P_802_2
ETH_P_TR_802_2
ETH_P_X25
ETH_P_8021Q
ETH_P_ALL用于所有
其中Func是上层协议的钩子函数,常用的有ip_rcv()和arp_rcv()等,然后iprcv()中又会解析ip上的协议,调用icmp_rcv/igmp_rcv/udp_rcv/tcp_rcv()等等 。
新的协议类型可以在驱动模块加载时,通过下面的接口增加到packet_type_list中:
void dev_add_pack()用于增加一种协议类型,将其packet_type指针加到链表上 。
void dev_remove_pack()用于从list_head上删除一种协议类型
4、 解析完报文协议之后,将报文放到skb_queue队列中
推荐阅读
- Windows和Linux通吃,最新远控木马“Dacls”来袭
- 利用Zabbix监控工具自动帮我们检测目标网络状况
- 细品Linux系统中文件的三个时间属性
- 山东日照绿茶产销新变化店面销变网络卖
- 日照:全面排查网络经营业户保护和提升“日照绿茶”品牌形象
- 开源交换机操作系统
- 如何在 Ubuntu 和其它 Linux 发行版上更新 grub
- Linux发行版之一CentOS的安装与网卡配置
- Linux系统管理命令:openssl
- 有趣的arp攻击
