一.TCP/IP
1.OSI与TCP/IP模型
OSI参考模型 | TCP/IP参考模型 | 协议 |
应用层 | 应用层 | DNS、DHCP、HTTP、SNMP、API、BSD Socket |
表示层 | ||
会话层 | ||
传输层 | 传输层 | TCP、UDP |
网络层 | 网络层 | IPv4、IPv6、ICMP、IGMP、ARP |
数据链路层 | 网络接口层 | PPP、SLIP、以太网、环回接口 |
物理层 |
网络接口层:主要负责网络上的数据帧的发送和接收,数据帧是底层网络传输的基本单元。网络接口有不同的实现方式,比如可以通过有线或无线的方式发送数据帧,不同的实现方式意味着不同的帧结构、发送速率等。网络接口层一方面将上层(网络层)的数据组装成自己特定的数据帧并发送,另一方面接收网络中的发给自己的数据帧,并解析出帧中的数据后递交上层(网络层)。
网络层:负责在主机之间的通信中选择数据报的传输路径,即路由。当网络层接收到来自于上层(传输层)的数据分组后,它会把分组封装在IP数据报中,填入数据报的首部,使用路由算法来确定是直接交付数据报,还是把它传递给路由器,然后把数据报交给适当的网络接口进行传输。网络层还要负责处理传入的数据报,并检验其数据有效性,然后判断该数据报是否是给本机的,如果不是,则使用路由算法将数据报转发;如果是,网络层需要去除数据报中的首部得到数据分组,然后将数据分组递交给上层(传输层)。
传输层:主要提供应用程序之间的通信服务。传输层协议把上层(应用层)要传输的数据流划分为分组,把每个分组连同目的地址交给网络层去发送。传输层要系统地管理两端数据的准确交互,要提供可靠的传输服务,以确保数据到达无差错、无乱序。为了达到这个目的,传输层协议可以采用协商、确认、重发等机制。
应用层:利用传输层提供了数据传输功能发送自己的数据到对方。
OSI为理论派,而TCP/IP为实践派。
网卡在物理层上发送以太网数据时添加上去的 | ||||||
前同步码 | SFD | 目的MAC地址 | 源MAC地址 | 长度/ 类型 | 数据和填充 | CRC |
7字节 | 1字节 | 6字节 | 6字节 | 2字节 | 46字节~1500字节 | 4字节 |
2.嵌入式TCP/IP协议栈(LwIP)
LwIP的含义是Light Weight(轻型)IP协议。最大优势在于可以移植的操作系统上,也可以在无操作系统的情况下独立运行,且代码量小。LwIP是TCP/IP协议一种独立、简单的实现,其设计目的在于:在保证嵌入式产品拥有完整TCP/IP功能的同时,又能保证协议栈对处理器资源的有限消耗,其运行一般仅需要几十KB的RAM和40KB左右的ROM。
3.ARP
全称Address Resolution Protocol,译作地址解析协议,ARP是网络层的重要组成部分。
在网络层看来,源主机与目的主机之间是通过IP地址来唯一标识的,但是任何网络的通信都是基于底层硬件链路的,IP数据包只有在具体的物理网络上才能进行发送。底层数据链路有着自己的一套寻址机制,例如在以太网中,是通过一个48位的MAC地址来标示不同的网络通信设备。每个网络接口有一个唯一的物理地址。
ARP协议的基本功能是在ARP缓存表中使用目标主机的IP地址,查询其对应的MAC地址。ARP缓存表中记录了一条一条的<IP地址,MAC地址>对。
ARP缓存表的建立与ARP数据包是密切相关的。在以太网中,ARP数据包和IP数据包是两个独立的部分,它们都封装在以太网帧中发送。ARP数据包的种类有两种:一是ARP请求包,它是通过以太网广播(目的地址为FF-FF-FF-FF-FF-FF)的方式发送的,用于向具有某个IP地址的主机发送请求,希望该主机返回其MAC地址;二是ARP应答包,收到ARP请求的主机会比对该数据包中的IP地址与自己的IP地址相符合,若是,则该主机向源主机返回一个ARP应答包,向源主机报告自己的MAC地址。源主机通过提取ARP应答包中的相关字段来更新ARP缓存表。
由于网络硬件状态可能随时发生改变,ARP协议还需要采用一定的定时机制来保证缓冲表中地址对的有效性。即一对IP地址和MAC地址在ARP表中不可能永久有效,必须采用一定的定时机制来实现动态绑定。
在IP数据包从源主机到达最终目的主机过程中,该IP数据包可能会经过中间物理网络中多种网络设备的转发,在每一次的转发过程中都会涉及地址转换的问题。在非最后一步转发中,当转发主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。在数据包转发的最后一步,分组必将经过最后一条物理线路到达它的目的站,发送主机这时必将目的主机IP地址映射为目标MAC地址。
以太网首部 | 28字节ARP数据包 | ||||||||||
以太网目的地址 (MAC地址) | 以太网源地址 (MAC地址) | 帧类型 | 硬件类型 | 协议类型 | 硬件地址长度 | 协议地址长度 | OP | 发送方以太网地址 | 发送方IP地址 | 接收方以太网地址 | 接收方IP地址 |
6字节 | 6字节 | 2字节 | 2字节 | 2字节 | 1字节 | 1字节 | 2字节 | 6字节 | 4字节 | 6字节 | 4字节 |
4.网际协议(IP)
IP是整个TCP/IP协议的核心,传输层协议,如UDP和TCP都需要IP提供的服务,而像ICMP和IGMP等网络层协议也是基于IP来传送协议数据。常见的广域网路由器就工作在IP层,它们负责将IP数据报从源主机送至目的主机,主机间的区分是通过IP地址来实现。主机上的IP协议需要完成的工作很多,最基本的是数据报发送和递交,在特殊情况下它还要完成数据报的分片和重装功能,在更特殊的情况下,它还要完成数据报的转发等工作。
互联网的功能可以抽象为一个分组交付系统,它能将分组从一个地方交付到另一个地址,其中起着关键作用的就是IP协议。IP是一种不可靠的无连接数据报协议。
4.1 IP分类编址
4.2特殊IP地址
A类:网络地址为:x.0.0.0,广播地址为:x.255.255.255;
B类:网络地址为:x.x.0.0,广播地址为:x.x.255.255;
C类:网络地址为:x.x.x.0,广播地址为:x.x.x.255;
本网络本主机:0.0.0.0
4.3子网编址
将主机号再划分为一个子网号和主机号。
子网掩码只有一个作用,就是将某个IP地址划分为网络号(包括子网号)和主机号两部分。
4.4网络地址转换(NAT)
NAT的功能可简单描述为:当内部网络用户连接互联网时,NAT将用户的内部IP地址转换成一个外部公共IP地址,反之,数据从外部返回时,NAT将目的地址替换成用户的内部IP地址。
具有NAT功能的路由器会在内部维护一个NAT转换表。
在NAT转换中,NAT端口是个关键的因素,路由器应该为每个连接分配一个唯一的NAT端口号,并及时回收那些不用的端口号。
参考资料:
朱升林 著 《嵌入式网络那些事》