linux-Tcp IP协议栈源码阅读笔记(7)

来源:未知 责任编辑:责任编辑 发表时间:2015-10-08 14:16 点击:

 

            2.5.1 do_initcalls---->net_dev_init()(net/core/dev.c)------>ethif_probe()(drivers/net/Space.c,在netdevice{}结构的init中调用,这边ethif_probe是以太网卡针对的调用)

 

 

 

3.网络设备驱动程序(略)

       

 

4.网络连接

 

     4.1 连接的建立和关闭

 

            tcp连接建立的代码如下:

                    server=gethostbyname(SERVER_NAME);

                    sockfd=socket(AF_INET,SOCK_STREAM,0);

                    address.sin_family=AF_INET;

                    address.sin_port=htons(PORT_NUM);

                    memcpy(&address.sin_addr,server->h_addr,server->h_length);

                    connect(sockfd,&address,sizeof(address));

 

       连接的初始化与建立期间主要发生的事情如下:

                     

       1)sys_socket调用:调用socket_creat(),创建出一个满足传入参数family、type、和protocol的socket,调用sock_map_fd()获取一个未被使用的文件描述符,并且申请并初始化对应的file{}结构。

       

       2)sock_creat():创建socket结构,针对每种不同的family的socket结构的初始化,就需要调用不同的create函数来完成。对应于inet类型的地址来说,在网络协议初始化时调用sock_register()函数中完成注册的定义如下:

        struct net_proto_family inet_family_ops={

                PF_INET;

                inet_create

        };所以inet协议最后会调用inet_create函数。

       

       3)inet_create: 初始化sock的状态设置为SS_UNCONNECTED,申请一个新的sock结构,并且初始化socket的成员ops初始化为inet_stream_ops,而sock的成员prot初始化为tcp_prot。然后调用sock_init_data,将该socket结构的变量sock和sock类型的变量关联起来。

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • /etc/fstab 详解
  •  LVS-NAT和LVS-DR模式的实现详解
  •  RHCE考试之磁盘配额
  • nginx主主集群
  •  LVM逻辑卷管理器
  • 学习笔记:ACL详解
  • suse linux双网卡双网关配置
  • puppet文件服务配置
  •  Nginx主主负载均衡架构

快速直达

操作系统导航

LinuxWindows虚拟机
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1