TCPIP协议规范及UIP处理流程模板目录一、简要历史 (4)二、TCP/IP协议族 (4)2.1. 简介 (4)2.2. 编址 (5)2.2.1 物理地址 (5)2.2.2 逻辑地址 (5)2.2.3 端口地址 (8)2.3. 分层数据包介绍 (8)2.3.1 以太网帧 (8)2.3.2 ARP报文格式 (9)2.3.3 IP数据报格式 (11)23.4 ICMP报文格式 (13)2.3.5 IGMP报文格式 (15)23.6 UDP用户数据报首部格式 (16)2.3.7 TCP报文段格式 (17)2.4. 分层协议讲解 (19)2.4.1 ARP 和RARP (20)2.4.2 IP 协议 (23)2.4.3 ICMP 协议 (25)2.4.4 网际组管理协议(IGMP) (30)2.4.5 用户数据报(UDP) (31)2.4.6 传输控制协议(TCP) (34)三、UIP处理流程 (40)3.1. 简介 (40)3.2. 层次结构 (41)3.2.1 实现设备驱动与UIP对接需要的7个接口程序,定义在uip.h: (42)3.2.2 应用层要调用的函数,包括一些宏定义与函数,定义在uip.h: (48)3.2.3 UIP中所用到的主要结构体 (55)3.2.4 uip的初始化与配置函数 (64)3.2.5 Uip的主程序循环 (67)3.2.6 主要的处理函数uip_process() (71)3.2.7 再來分析UIP_UDP_SEND_CONN,主要处理UDP报文的发送: (79)3.2.8 接下來,分析UIP_POLL_REQUEST (82)3.2.9 对定时器期满的处理流程UIP_TIMER (84)3.2.10 对UIP_UDP_TIMER 的处理流程 (86)3.2.11 原始套接字和原始线程 (87)一、简要历史1973 年,ARPANET 核心组成员Vint Cerf 和Bob Kahn 发表了—篇里程碑论文,阐述了实现分组的端到端交付的协议。
这篇关于传输控制协议(TCP)的论文包括:封装、数据报,以及网关的功能。
后来,TCP被划分为两个协议:传输控制协议(TCP)和网际互联协议(IP) o IP处理数据报的路由选择,而TCP负责高层的一些功能,如分段、重装和差错检测。
这个用来进行网际互联的协议后来就被称为TCP/IP O二、TCP/IP协议族2.1.简介TCP/IP协议族由5层组成:物理层、数据链路层、网络层、运输层和应用层。
前四层与OSI模型的前四层相对应,提供物理标准、网络接口、网际互联、以及运输功能。
而应用层与OSI模型中最高的三层相对应。
TCP/IP协议族中的各层包含了一些相对独立的协议。
在物理层和数据链路层,TCP/IP并没有定义任何协议。
在网络层TCP/IP 支持网际互联协议(IP),而IP又由四个支撑协议组成:ARP、RARP、ICMP和IGMPo在传统上,TCP/IP协议族在运输层有两个运输协议:TCP和UDP,然而现在已经设计出一个新的运输层协议SCTP以满足新的应用的需要。
IP是主机到主机的协议,即把分组从一个物理设备交付到另一个物理设备。
UDP和TCP是运输机协议,负责把报文从一个进程(运行着的程序)交付到启一个逬程。
2.2.编址使用TCP/IP协议的互联网使用3个等级的地址:物理(链路)地址、逻辑(IP)地址以及端□地址。
每一种地址属于TCP/IP体系结构中的特定层。
2.2.1物理地址物理地址也叫链路地址,杲结点的地址,由它所在的局域网或广域网定义。
物理地址包含在数据链路层使用的帧中。
以太网的地址杲6字节(48位)长,一般见十六进制记法,如: 07:01:02:01:2C:4B。
以太网的地址共3种:单播、多播和广播。
在单播地址中的第一个字节的最低位0;在多播地址中的第一个字节的最低位是1。
广播地址是48个1。
2.2.2逻辑地址因特网的逻辑地址是32位地址,能够用来标志连接在因特网上的每个主机。
在因特网上没有两个主机有相同的IP地址。
同样,资料内容仅供您学习参考,如有不X或者佞权,请联系改正或者删除。
逻辑地址也能够是单播地址、多播地址和广播地址。
Internet被各种路由器和网关设备分隔成很多网段,为了标识不同的网段,需要把32位的IP地址划分成网络号和主机号两部分, 网络号相同的各主机位于同一网段,相互间能够直接通信,网络号不同的主机之间通信则需要经过路由器转发。
把所有IP地址分为五类,如下图1所示:724图2-1A类0.0.0.0到127.255.255.255 B类128.0.0.0到191.255.255.255 C类192.0.0.0到223.255.255.255 D类224.0.0.0到239.255.255.255 E 类240.0.0.0 到247.255.255.255在分类编址的A类.B类、C类地址中,IP地址可划分为net-id(网络标识)和host-id(主机标识)。
对于A类地址,1字节定义nct・id而3字节定义host-ido对于B类地址,2字节定义net・id, 2字节定义host-id o对于C类地址,3字节定义net-id而1字节定义host-ido D类地址和E类地址不划分net-id和host-id o 网络地址是一个地址块的第一个地址,向因特网的其余部分定义这个网络。
路由器就杲根据网络地址来选择分组的路由。
若给出网络地址,我们就能够找出这个地址的类别、地址块以及这个地址块的地址范围。
这种划分方案有很大的局限性,它对网络的划分是flat的而不是层级结构(hierarchical)的。
Internet上的每个路由器都必须掌握所有网络的信息,随着大量C类网络的出现,路由器需要检索的路由表越来越庞大,负担越来越重。
于是提出了新的划分方案,称为CIDR( Classless Interdomain Routing) o网络号和主机号的划分需要用一个额外的子网掩码(subnet mask)来表示,而不能由IP地址本身的数值决定,也就是说,网络号和主机号的划分与这个IP地址是A类、B类还是C类无关,因此称为Classless的。
这样,多个子网就能够汇总(summarize)成一个Internet上的网络。
IP地址与子网掩码做与运算能够得到网络号,主机号从全0到全1就是子网的地址范围。
IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68,子网掩码的高24位是1,也就是255.255.255.0o目的地址为255.255.255.255,表示本网络内部广播,路由器不转发这样的广播数据包。
目的地址的主机号为全1,表示广播至某个网络的所有主机, 例如目的地址192.168.10.255表示广播至192.168.10.0网络(假设子网掩码为255.255.255.0)。
2.2.3端□地址计算机是多逬程设备,即能够在同一时间运行多个进程。
因特网通信的最终目的是使一个进程能够和启一个进程通信。
为了能够同时发生这些事情,需要有一种方法对不同的逬程打上标号,就是说这些进程需要地址。
在TCP/IP体系结构中,给一个进程指派的标号叫做端□地址。
TCP/IP中的端□地址是16位长,一般见10逬制数表示。
2.3.分层数据包介绍2-3.1以太网帧资料内容仅供您学习参考,如有不'勺或者佞权,请联系改正或者删除。
图2・2目的地址(DA ) DA 字段有6字节,是下一站的物理地址(也 □U MAC 地址)。
源地址(SA ) SA 字段有6字节,是前一站的物理地址。
类型 RARPo类型字段有三种值,分别对应IP 、ARP 、数据 携带从上层协议封装起来的数据。
它的最小长度 是46字节,最大长度是13UU 字节。
ARP 、RARP 的数据包长度不够46字节,要在后 面补填充位。
最大值1500称为以太网的最 大传输单元(MTU ),如果一个数据包从以 太网路由到链路上,数据包的长度大于链 路的MTU 了,则需要对数据包进行分片CRC 差钻粒测仕息,4字~Po2.3.2 ARP 扌艮文格式图2・3如上图3所示,ARP 分组的格式如下:硬件类型 16位字段,用来定义运行ARP 的链路层网络的 类型。
以太网杲类型lo硬件i 协汉 类型1类型 op 发送端 以太网」也址 IP 地址 冃的氐太网 口的 】P 地址 2 2 1 1 2 6 4 6 4 28字节ARFi 疔求/应签 厂■越件地址K 度协议地址长度7资料内容仅供您学习参考,如有不、勺或者侵权,请联系改正或者删除。
协议类型16位字段,指要转换的地址类型。
0x0800位IP地址。
硬件长度8位字段,定义以字节为单位的物理地址长度。
对以太网这个值为6。
协议长度8位字段,定义以字节为单位的逻辑地址长度。
对IPv4协议这个值是4O操作16位字段,定义分组的类型。
为1表示ARP请求,为2表示ARP应答。
发送端硬件地址可变长度字段,定义发送端的物理地址。
发送端协议地址定义发送端的逻辑地址。
目标硬件地址定义目标的物理地址。
对于ARP请求报文,这个字段是全0,因为发送端不知道目标的物理地址。
目标协议地址定义目标的逻辑(如,IP)地址。
资料内容仅供您学习参考,如有不、勺或者侵权,请联系改正或者删除。
2.3.3IP数据报格式图2-4如上图4所示,IP数据报的结构包括:版本(VER) 这个4位字段定义IP协议的版本。
首部长度(HLEN)这个4位字段定义IP首部总长度,以4字节为单位计算。
当没有选项时,首部长度是20字节,这个字段的值是5( 5*4=20) o 当选项字段位最大值时,这个字段的值是15(15*4=60)o 服务类型(DS) TOS位是4位子字段,共有5种不同的服务类型。
总长度这个16位字段定义了以字节计的数据报总长度(首部加上数据)。
要找出上层传来的数据长度,能够从总长度减去首部长度。
总长度字段杲16位,因此IP数据报的长度限制是65535( 2,6- 1)字节。
标识(Identification)这个16位字段与源IP地址一起唯一地定义这个数据报。
IP协议使用一个计数器来标志数据报,当IP协议发送数据时,就把这个计数器的当前值复制到标识字段中,并加1。
当数据报被分片时,标识字段的值就复制到所有的分片中。
换言之, 所有的分片具有相同的标识号,即原始数据报的标识号。
在终点重装数据报时,终点就知道所有具有相同标识号的分片必须组装成一个数据报。
标志(Flags) 3位字段。
第一位保留。
第二位为不分片位,为1表示不对数据报逬行分片;为0表示在需要时对数据报进行分片。
第三位为分片位,为1表示这个数据报不是最后的分片,在其后还有分片;为0表示这个数据报是最后的分片。