网络数据包发送接收全过程

Linux的网络接口分为四部分:网络设备接口,网络接口核心,网络协议族,网络接口socket层。
可参考:
http://lxr.linux.no/linux+v2.6.30.4/net/
  网络设备接口部分主要负责从物理介质接收和发送数据,实现的文件在linu/driver/net目录下面。

  网络接口核心部分是整个网络接口的关键部位,它为网络协议提供统一的发送接口,屏蔽各种各样的物理介质,同时有负责把来自下层的包向合适的协议配送。它是网络接口的中枢部份。它的主要实现文件在linux/net/core目录下,其中linux/net/core/dev.c为主要管理文件。

  网络协议族部分是各种具体协议实现的部份。Linux支持TCP/IP,IPX,X.25,AppleTalk等的协议,各种具体协议实现的源码在linux/net/目录下相应的名称。在这里主要讨论TCP/IP(IPv4)协议,实现的源码在linux/net/ipv4,其中linux/net/ipv4/af_inet.c是主要的管理文件。

  网络接口Socket层为用户提供的网络服务的编程接口,主要的源码在linux/net/socket.c

发送:

应用程序调用系统调用,将数据发送给socket
socket检查数据类型,调用相应的send函数
send函数检查socket状态、协议类型,传给传输层
tcp/udp(传输层协议)为这些数据创建数据结构,加入协议头部,比如端口号、检验和,传给下层(网络层)
ip(网络层协议)添加ip头,比如ip地址、检验和
如果数据包大小超过了mtu(最大数据包大小),则分片;ip将这些数据包传给链路层
链路层写到网卡队列
网卡调用响应中断驱动程序,发送到网络

接收:

数据包从网络到达网卡,网卡接收帧,放入网卡buffer,在向系统发送中断请求
cpu调用相应中断函数,这些中断处理程序在网卡驱动中
中断处理函数从网卡读入内存,交给链路层
链路层将包放入自己的队列,置软中断标志位
进程调度器看到了标志位,调度相应进程
该进程将包从队列取出,与相应协议匹配,一般为ip协议,再将包传递给该协议接收函数
ip层对包进行错误检测,无错,路由
路由结果,packet被转发或者继续向上层传递
如果发往本机,进入链路层
链路层再进行错误侦测,查找相应端口关联socket,包被放入相应socket接收队列

socket唤醒拥有该socket的进程,进程从系统调用read中返回,将数据拷贝到自己的buffer,返回用户态。


DNS请求流程

1、PC1要访问www.google.com,需要先知道对应IP地址。
域名只起助记作用,互联网访问通过IP进行。
比方,DNS是公民身份信息库,ip是身份证号,域名是该身份证号对应的人名。
当然,这个比方不是很恰当,域名也必须唯一的,与ip对应。

2、于是,PC1需要像DNS请求,查找www.google.com对应的ip,即发送dns请求:
PC1查找dns,发现不在同一个网络,不同网段需要网关转发。
但是,PC1需要先发送给网关,就需要先知道网关ip。
网关用于连接不同网络,并且有自己的IP,PC1需要知道网关ip。于是,通过ARP请求,像内网广播网关ip,网关回复mac地址。
PC1得到了网关的mac地址,将ip包封装到以太网帧,发送给网关。

3、网关收到该以太网帧,需要转交给dns服务器。
同样,网关可能需要发送ARP请求,得到dns的mac地址。

4、dns服务器收到请求,将www.google.com的ip发送给网关,网关再根据NAT会话表项,将目的ip转换成PC1的,再发送给PC1(此过程可能同样需要ARP请求)。

5、PC1收到了目的ip,再可以通过类似上面的方式发送请求(目的ip再可以直接填上获取的ip)。

其中:
ARP==>将ip广播,目的主机响应,反馈mac地址。


NAT==>在一个网络内部,自定义合法的ip地址。内网各主机通过内网通讯;与外网通过NAT转换,变成外网合法ip。这样,将内网与外网隔离,各个网络有自己的ip,既可以重叠,又可以通过少数几个ip与外网通讯,在ip大量缺乏的现代,节省了很多。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算机网络复习题 (答案仅供参考) 一、选择题 1. 广域网的英文缩写为( B ) A. LAN B. WAN C. ISDN D. MAN 2. 在同一个信道上的同一时刻,能够进行双向数据传送的通信方式是( C ) A. 单工 B. 半双工 C. 全双工 D. 上述三种均不是 3. 以下 IP 地址中为 C 类地址是 ( B ) A. 123.213.12.23 B. 213.123.23.12 C. 23.123.213.23 D. 132.123.32.12 4. 在下列给出的协议中, ( C ) 是 TCP/IP 的应用层协议? A. TCP B. ARP C. FTP D. ICMP 5. 在 TCP/IP 体系结构中,运输层 TCP 协议连接的建立采用 ( C ) 法。 A. 慢启动 B. 协商 C. 三次握手 D. 滑动窗口 6. 以太网媒体访问控制技术 CSMA/CD 的机制是 ( A ) A. 争用带宽 B. 预约带宽 C. 循环使用带宽 D. 按优先级分配带宽 7. 在 IP 数据包头中,如果 TTL 值减少到(A ),这个数据包必须被丢弃。 A. 0 B. 1 C. 255 D. 用户设置的值 8. 浏览器与 Web 服务器之间通信采用的协议为 ( B ) A. FTP B. HTTP C. SMTP D. TELNET 9. 在滑动窗口协议中,如果发送窗口的尺寸和接收窗口的尺寸均等于 1 时,就是( B ) A. 出错全部重发协议 B. 停 -- 等协议 C. 选择重发协议 D. 争用协议 10. 下列不属于电子邮件协议的是( C ) A. POP3 B. SMTP C. SNMP D. IMAP4 11. 目前国内最常用的局域网技术是 ( A ) A. 以太网 B. ATM 网 C. 令牌环网 D. FDDI 网 12. 典型的路由协议 RIP 是以 ( D ) 作为目标的优化算法。 A .链路状态 B .延迟时间 C .通信流量 D .距离向量 13. 在常用的内部网关协议中,内部网关协议是指在一个( D )内部路由器使用的路由协议。 A. 校园 / 企业网 B. 局域网 C. 城域网 D. 自治系统 14. OSI 参考模型由 ( C ) 个层次组成。 A. 5 B. 6 C. 7 D. 8 15. HDLC 属于 ( B ) 层的协议。 A .物理层 B .数据链路层 C .网络层 D .运输层 16. Internet 的核心协议是 ( B ) A . X . 25 B . TCP / IP C . ICMP D . UDP 。 17. 在以太局域网中,将以太网卡地址映射为 IP 地址的协议是 ( A ) A. RARP B. HTTP C. UDP D. ARP 18. 在有网络需要互连时,通常 ( A ) 上连接时需要用中继器 / 集线器这样的互连设备。 A. 物理层 B. 数据链路层 C. 网络层 D. 传输层 19. 以太网定义的最大帧长度(不包括 CRC ,但包括 MAC 头)为 ( C ) A. 128 字节 B. 512 字节 C. 1514 字节 D. 4096 字节 20. 在网页浏览过程中, Cache 的作用是 ( C ) A .提高传输的准确率。 B .提高图像质量。 C .加快浏览速度。 D .使浏览器可以播放声音。 21. FDDI 标准规定网络的传输媒体采用 ( C ) A. 非屏蔽双绞线 B. 屏蔽双绞线 C. 光纤 D. 同轴电缆 22. 在常用的内部网关协议中,内部网关协议是指在一个( D )内部路由器使用的路 由协议。 A .校园 / 企业网 B .局域网 C .城域网 D .自治系统 23. 以下关于协议与服务的描述正确的是 ( A ) 。 A .协议是水平的,服务是垂直的 B .协议是垂直的,服务是水平的 C .协议和服务都是垂直的 D .协议和服务都是水平的 24. PPP 属于 ( B ) 层的协议。 A .物理层 B .数据链路层 C .网络层 D .运输层 25. 以下地址中和 86.32/12 匹配的是 ( A ) 。 A . 86.33.224.123 B . 86.79.65.216 C . 86.58.119.74 D . 86.68.206.154 26. 以下地址前缀中和 2.52.90.140 匹配的是 ( A ) 。 A . 1/4 B . 16/4 C . 4/6 D . 32/4 27. 在以下网络威胁中,哪个不属于信息泄露 ( C ) A. 数据窃听 B. 流量分析 C. 拒绝服务攻击 D. 偷窃用户账号 28. 计算机网络系统中广泛使用的 MD5 算法属于 ( C ) A. 不对称加密 B. 对称加密 C. 不可逆加密 D. 公开密钥加密 29. 在构建以太网时,目前最常用的传输媒体为 ( B ) A. 蓝牙 B. 双绞线 C. 光纤 D. 同轴电缆 30. DHCP 协议不能为主机动态配置( D ) A. IP 地址 B. 网关地址 C. DNS 服务器 D. Web 服务器 31 .下列不属于网页设计语言的是( B ) A. HTML B. HTTP C. VBScript D. JSP 32 .以下协议中基于 UDP 的是( B ) A. FTP B. TFTP C. HTTP D. SMTP 33. 计算 TCP 校验和时要用到“伪首部” ,该“伪首部”不包括( C ) A. 源 IP 地址 B. 目标 IP 地址 C. TCP 首部长度 D. TCP 长度 34 .以下用于多播管理的是( A )

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值