
《TCP/IP详解卷2:实现》笔记
文章平均质量分 86
TODD911
热爱计算机
展开
-
《TCP/IP详解卷2:实现》笔记--4种不同类型的mbuf
mbuf的主要用途是保存子进程和网络接口间互相传递的用户数据。但mbuf也用于保存其他各种数据:源于目的地址、插口选项等等。下面介绍我们要遇到的四种类型的mbuf,它们依据在成员m_flag中填写的不同标志M_PKTHDR和M_EXT而不同。1.如果m_flags等于0,mbuf只包含数据,在mbuf中有108字节的数据空间(m_dat数组)。指针m_data指向这108字节缓原创 2014-05-11 15:23:39 · 3850 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--选路请求和选路消息
内核的各种协议并不直接使用前面提供的函数来访问选路树,而是调用几个函数:rtalloc和rtallocl是完成路由表查询的两个函数;rtrequest函数用于添加和删除路由表项;另外大多数接口在接口连接或断开时都会调用函数rtinit。选路消息在两个方向上传递信息。进程(route命令)或守护进程(routed或gated)把选路消息写入选路插口,以使内核添加路由、删除路由或者修改现有原创 2014-10-21 22:18:22 · 2992 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--选路插口
一个进程使用选路域(routing domain)中的一个插口来发送和接收选路报文,socket系统调用需要制定一个PF_ROUTE的族类型和一个SOCK_RAW的插口类型。该进程可以向内核发送以下五种选路报文:1.RTM_ADD:增加一条新路由。2.RTM_DELETE:删除一条已经存在的路由。3.RTM_GET:取得有关一条路由的所有信息。4.RTM_CHANGE:改变一条原创 2014-10-23 22:44:05 · 2100 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--协议控制块
协议层使用协议控制块(PCB)存放各UDP和TCP插口所要求的多个信息片。原创 2014-11-13 22:23:26 · 6189 阅读 · 1 评论 -
《TCP/IP详解卷2:实现》笔记--Radix树路由表
由IP完成的路由选择是一种选路机制,它通过搜索路由表来确定从哪个接口把分组发送出去,它与选路策略不一样,选路策略是一组规则的集合,这些规则用来确定哪些路由可以编入到路由表中,Net/3内核实现选路机制,而选路守护进程,典型地如routed或gated,实现选路策略。原创 2014-10-12 15:42:38 · 6451 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--ARP:地址解析协议
Net/3中ARP的实现是和路由表紧密关联的,原创 2014-10-30 22:47:25 · 4665 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--TCP的输入
当收到的数据报的协议字段指明这是一个TCP报文段时,ipintr(通过协议协议转换表中的pr_input函数)会调用tcp_input进行处理,tcp_inut在软件中断一级执行。函数非常长,我们将分两张讨论,下图列出了tcp_input中的处理框架。本章将结束对RST报文段处理的讲解,下一章开始介绍ACK报文段的处理。原创 2015-01-06 22:45:00 · 2602 阅读 · 1 评论 -
《TCP/IP详解卷2:实现》笔记--TCP的输入(续)
本文处理ACK标志,更新窗口信息,处理URG标志及报文段中携带的所有数据,最后处理FIN标志,如果需要,则调用tcp_output。1.完成被动打开和同时打开原创 2015-01-07 21:52:21 · 1439 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--TCP的用户需求
本文介绍TCP的用户请求处理函数tcp_usrreq,它被协议的pr_usrreq函数调用,处理各种与tcp插口有关的系统调用,此外,还将介绍tcp_ctloutput,应用进程调用setsockopt设定tcp插口选项时会用到它。原创 2015-01-10 23:41:56 · 1804 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--UDP:用户数据报协议
用户数据报协议,即UDP,是一个面向数据报的简单运输层协议:进程的每次输出操作只产生一个UDP数据报,从而发送一个IP数据报。进程通过创建一个Internet域内的SOCK_DGRAM类型的插口,来访问UDP。该类型插口默认地称为无连接的。每次进程发送数据时,必须指定目的IP地址和端口号。每次从插口上接收数据报时,进程可以从数据报中收到源IP地址和端口号。原创 2014-12-20 23:16:35 · 3464 阅读 · 2 评论 -
《TCP/IP详解卷2:实现》笔记--BPF:BSD 分组过滤程序
BSD分组过滤程序(BPF)是一种软件设备,用于过滤网络接口的数据流,即给网络接口加上开关。应用进程打开/dev/bpf0、/dev/bpf1等等后,可以读取BPF设备,每个应用进程一次只能打开一个BPF设备。通过若干ioctl命令,可以配置BPF设备,把它与某个网络接口相关联,并安装过滤程序,从而能够选择性地接收输入的分组。BPF设备打开后,应用进程通过读写设备来接收分组,或将分组放原创 2015-01-12 21:51:58 · 3508 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--原始IP
应用进程在Internet域中创建一个SOCK_RAW类型的插口,就可以利用原始IP层。一般有下列3种用法:1.应用进程可利用原始插口发送和接收ICMP和IGMP报文。有些选路守护程序,利用这一特征跟踪通常由内核处理的ICMP重定向报文段。这个特征还用于实现基于ICMP的协议,如路由通告和路由请求,他们需用到ICMP,不过最好由应用进程,而不是内核完成相应处理。多播路由守护程序原创 2015-01-13 21:51:21 · 2229 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--TCP:传输控制协议
传输控制协议,即TCP,是一种面向连接的传输协议,为两端的应用程序提供可靠的端到端数据流传输服务,它完全不同于无连接的、提供不可靠数据传输服务的UDP协议。原创 2014-12-30 22:50:01 · 2315 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--TCP的定时器
TCP为每条连接建立了7个定时器。按照它们在一条连接生存期内出现的次序,简要介绍如下。原创 2015-01-04 22:07:15 · 1379 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--插口选项
下图列出了实现插口选项系统调用的函数。本章描述带原创 2014-09-23 21:01:02 · 1508 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--插口I/O
本文介绍有关网络连接上读写原创 2014-09-22 20:41:42 · 3515 阅读 · 2 评论 -
《TCP/IP详解卷2:实现》笔记--接口层:以太网和环回
1.以太网接口Net/3以太网设备驱动程序都遵循同样的设计。对于大多数Unix设备驱动程序来说,都是这样,因为写一个新接口卡的驱动程序总是在一个已有的驱动程序的基础上修改而来的。下面我们简要地概述一下以太网的标准和一个以太网驱动程序的设计。下图是一个IP分组的以太网封装。我们所讨论的最初的以太网组帧的标准在1982年由Digital设备公司,intel公司以及施乐公司发布,原创 2014-05-18 18:16:46 · 4847 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--mbuf与输入输出(UDP篇)
在BSD的TCP/IP代码中的一个基本概念是存储器缓存,成为mbuf,在整个实现中用于存储各种信息。(在linux中使用的是skbuff,UNUX和LINUX在TCP/IP实现上有不同。)下图是BSD TCP/IP代码的大概组织。1.包含socket地址结构的mbuf下图是一个包含socket地址结构的mbuf。mbuf的前20个字节是首部,它包含关于这原创 2014-04-17 08:55:05 · 4895 阅读 · 1 评论 -
《TCP/IP详解卷2:实现》笔记--域和协议
Net/3组把协议关联到一个域,并且用一个协议族常量来标识每个域。Net/3还通过所有的编址方法将协议分组。在一个域中的每个协议使用同类地址,并且每种地址只被一个域使用。作为结果,一个域能通过它的协议族或地址族常量唯一标识。下图是是我们讨论的协议和常量。1.domain结构一个协议有一个下图所示的domain结构来表示。下图显示了一个domains列表的原创 2014-06-01 15:51:59 · 2634 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--IP编址
1.接口和地址在本文中讨论的所有接口和地址结构的一个例子配置如下图所示:上图中显示了我们三个接口例子:以太网接口,SLIP接口和环回接口。它们都有一个链路层地址作为地址列表中的第一个结点。显示的以太网接口有两个IP地址,SLIP接口有一个IP地址,并且环回接口有一个IP地址和一个OSI地址。所有的IP地址都被链接到in_ifaddr列表中,并且所有链路层地址能从ifnet_原创 2014-05-25 14:14:48 · 3211 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--中断级别与并发
网络代码处理输入分组用的是异步和中断驱动的方式。首先,一个设备中断引发接口层代码执行,然后它产生一个软中断引发协议层代码执行。当内核完成这些级别的中断后,执行插口代码。当内核完成这些级别的中断后,执行插口代码。在这里给每个硬件和软件中断分配一个优先级。如下图:对于不同优先级,一个要关心的问题就是如何处理那些在不同级别的进程共享的数据结构。例如,当IP输入例程正在从它的输入队原创 2014-04-28 21:28:22 · 3238 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--IP的分片和重装
IP首部内有三个字段实现分片和重装:标识字段(ip_id)、标志字段(ip_off的3个高位比特)和偏移字段(ip_off的13个低位比特)。标志字段由3个1bit标志组成。比特0是保留的必须为0,;比特1是“不分片”(DF)标志;比特2是“更多分片”(MF)标志。Net/3中,标志和偏移字段结合起来,由ip_off访问,如下图所示:ip_off的其他13bit指出在原始数据报原创 2014-07-23 22:09:08 · 3172 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--IP:网际协议
本章介绍IP分组的结构和基本的IP处理过程,包括输入,转发和输出。原创 2014-07-02 22:13:27 · 3949 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--接口层
接口层包括在本地网上发送和接收分组的硬件与软件。我们用设备驱动程序来表示与硬件及网络接口通信的软件,网络接口是指在一个特定网络上硬件与设备驱动器之间的接口。Net/3接口层试图在网络协议和连接到一个系统的网络设备的驱动器间提供一个与硬件无关的编程接口。这个接口层为所有的设备提供以下支持。1.一套精心定义的接口函数。2.一套标准的统计与控制标志。3.一个与设备无关的存储协议地原创 2014-05-12 20:24:48 · 3418 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--IP选项处理
IP输入函数(ipintr)将在验证分组格式(检验和,长度等)之后,确定分组是否到达目的地之前,对选项进行处理。这表明分组所遇到的每个路由器以及最终的目的主机都对要分组的选项进行处理。IP分组内可以包含某些在分组被转发或被接收之前处理的可选字段。IP实现可以用任意顺序处理选项。标准IP首部之后最多可跟40字节的选项。1.选项格式IP选项字段可能包含0个或多个单独选项。选原创 2014-07-22 14:11:51 · 4103 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--ICMP:Internet控制报文协议
ICMP原创 2014-08-18 21:27:26 · 4357 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--IP多播
D类IP地址(224.0.0.0到239.255.255.255)不识别互联网内的单个接口,但识别接口组,被称为多播组。原创 2014-08-19 22:27:51 · 7341 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--IGMP:Internet组管理协议
IGMP在本地网络上的主机和路由器之间传达组成员信息,luyouqi原创 2014-08-21 16:40:19 · 4691 阅读 · 1 评论 -
《TCP/IP详解卷2:实现》笔记--插口层
插口层的主要功能是将进程发送的与协议有关的请求映射到产生插口时指定的与协议有关的实现。下图说明了进程中的插口接口与内核中的协议实现之间的层次关系。1.socket结构插口代表一条通信链路的一端,存储或指向与链路有关的所有信息。这些信息包括:使用的协议、协议的状态信息(包括源和目的地址)、到达的链接队列、数据缓存和可选标志。下图给出了插口和与插口相关的缓存的定义。原创 2014-09-08 11:31:46 · 3207 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--IP多播选路
本文讨论在Net/3中的多播选路程序mrouted2.0。原创 2014-08-26 17:18:03 · 2672 阅读 · 0 评论 -
《TCP/IP详解卷2:实现》笔记--TCP输出
函数tcp_output负责发送报文段,代码中很多地方都调用了它。tcp_usrreq在多种请求处理中调用了这一函数:处理PRU_CONNECT,发送初始SYN;处理PRU_SHUTDOWN,发送FIN;处理PRU_RCVD,应用进程从插口接收缓存中读取若干数据后可能需要发送新的窗口大小通告;处理PRU_SEND,发送数据;处理PRU_SENDOOB,发送带外数据。tcp_fast原创 2015-01-05 22:56:59 · 1742 阅读 · 0 评论