IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 操作系统 > LINUX > Linux TCP/IP协议的使用和建立

Linux TCP/IP协议的使用和建立

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

    linux系统在很多企业和公司中都作为一个主要的操作系统。那么在这个系统上如何进行TCP IP协议栈的搭建呢?下面我们就来详细说一下Linux TCP IP协议栈的组件过程。

    分析tcp_v4_init,这个函数在net/ipv4/tcp_ipv4.c里面:

函数在net/ipv4/tcp_ipv4.c里面
函数在net/ipv4/tcp_ipv4.c里面

  tcp_inode当然就是一个inode节点了,而tcp_socket等于tcp_inode.u.socket_i,通过一个指针他们指向同一个内存。tcp_socket是用来通信使用的,可以叫Linux TCP IP协议栈当中TCP的controlsocket或者是communication

  socket,TCP IP协议栈当中TCP的通信没有相应的socket的时候这个socket就充当了socket的角色。比如在一个关闭端口上收到SYN时发送RST,或者是在三次握手的时候发送SYN(还没有accept产生新的socket)

  值得注意的是ops->create函数的调用,我们前面见过对于AF_INET来说这个回调函数是net/ipv4/af_inet.c的inet_create函数,这个函数是用来创建一个socket的时候用的,由于函数比较长,这里先略过分析,这第一次的分析只是一个大致流程的熟悉而已。

  由于有socket创建和通信,所以这段代码是协议相关的,所以把这段代码从原来的tcp.c里面提取了出来

  下面是tcp_init函数,它在net/ipv4/tcp.c里面,大体上来说就是创建了几个hash表和bucket.这段代码创建了下面几个全局对象:

全局对象
全局对象

  其中ehash代表establishedhash,bhash代表bindhash,它们当然分别是所有的满足TCP_ESTABLISHED<=sk->state

  再下来就是icmp_init函数了,在net/ipv4/icmp.c里面,事实上,如果把tcp_v4_init里面的IPPROTO_TCP替换成IPPROTO_ICMP,基本都是一样的。剩下的proc_net_register函数前面已经讲过了,这里就不说了。

  到这里为止,Linux TCP IP协议栈当中IP的开始的工作我们基本应该有了个了解,其中有几个关键的函数:

  dev_add_pack:注册一个链路层以上的处理函数,一般是用来使用新的网络层协议的,不过如果注册时重复也是可以的,这时候系统会设置一个copy位。如果是ETH_P_ALL则会接收所有的数据包。加入的元素保存在ptype_all链表和ptype_basehash链表中间。

  inet_add_protocol:注册一个建立在IP层以上的协议,例如TCP和UDP等

  proc_net_register(还有类似的proc_register):

  在/proc/net目录下面创建一个子目录项来使管理者能通过文件系统得到统计信息

  现在迷惑的地方还有很多,一个是结构体sk_buff的每个成员的意义,一个是结构体sock的意义,不过这两个问题应该在以后看多了就知道了。

关键词标签:Linux,TCP/IP协议

相关阅读 安装红帽子RedHat Linux9.0操作系统教程 Tomcat9.0如何安装_Tomcat9.0环境变量配置方法 多种操作系统NTP客户端配置 Linux操作系统修改IP Linux实现SCSI硬盘热插拔及在线识别 Linux下用CDMA modem拨号上网

文章评论
发表评论

热门文章 安装红帽子RedHat Linux9.0操作系统教程 安装红帽子RedHat Linux9.0操作系统教程 Linux服务器:设计高性能网站架构-LLMP Linux服务器:设计高性能网站架构-LLMP 使用Clonezilla迁移到虚拟Linux环境 使用Clonezilla迁移到虚拟Linux环境 Linux上的MRTG流量监控中心 Linux上的MRTG流量监控中心 Linux 双网卡绑定一个IP原理及实现 Linux 双网卡绑定一个IP原理及实现 linux和windows等系统远程控制ubuntu桌面 linux和windows等系统远程控制ubuntu桌面

相关下载

人气排行 Linux下获取CPUID、硬盘序列号与MAC地址 dmidecode命令查看内存型号 linux tc实现ip流量限制 安装红帽子RedHat Linux9.0操作系统教程 linux下解压rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 关机、重启、注销 命令 查看linux服务器硬盘IO读写负载 linux命令行浏览器的使用方法 Linux NFS服务固定端口及防火墙配置 U盘安装Ubuntu 10.04 Linux清除用户登录记录和命令历史方法