LwIP之网络技术基础
一、协议模型
TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟,并被广泛应用于局域网和广域网中,目前已成为事实上的国际标准。TCP/IP协议簇是一组不同层次上的多个协议的组合,通常被认为是一个四层协议系统,与OSI的七层模型相对应。
- 链路层
用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、网卡,及光纤等物理可见部分。
- 网络层
用来规定通过怎样的路径把数据包传送给对方计算机。
- 传输层
主要为两台主机上的应用程序提供端到端的通信。
- 应用层
应用层负责处理特定的应用程序细节。
二、各层协议
各种协议在TCP/IP协议模型中所处的层次如下:
ARP:通过IP地址获取MAC地址。
RARP:通过MAC地址获取IP地址。
IP:尽快将数据包从一个主机传送到另一个主机,不保证可靠性。
ICMP:IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
IGMP:Internet组管理协议,用来把UDP数据报多播到多个主机。
UDP:简单地将数据包从一个应用程序发送到另一个应用程序,不保证可靠性。
TCP:提供一个应用程序到另一个应用程序的可靠传输。
三、IP地址及分类
互联网中采用一套独立的编址技术,使任何主机的编址不受其物理环境的影响。设计人员为每一台主机分配了一个唯一的32bit整数地址,称之为IP地址。
目前IP地址采用了分类的概念,把所有地址划分为A、B、C、D、E五类。
其中,有一些特殊用途的IP地址
环回地址:127.x.x.x,通常使用127.0.0.1。
网络地址:主机号全0的地址,如85.0.0.0、134.89.0.0、213.89.89.0等。
直接广播地址:用于向所在网络广播消息。主机号全1的地址,如85.255.255.255、134.89.255.255、213.89.89.255等。
受限广播地址:255.255.255.255,用于向本地网络广播消息。
不确定IP地址:0.0.0.0,表示整个网络
错误地址:169.254.x.x,DHCP分配失败时系统自动分配。
本网络特定主机地址:网络号全0的地址,如0.x.x.x、0.0.x.x、0.0.0.x。
四、子网划分与子网掩码
标准IP地址使用网络号和主机号两层地址结构,当大量个人用户和小型局域网用户接入互联网,即使为其分配一个C类网络也会造成IP地址的大量浪费。随着互联网用户的剧烈增长,IP地址的分配变得格外紧张,为每个物理网络分配一个网络号的做法变得很不现实。
因此,通过子网掩码的方式将网络进一步划分为多个子网,将原来的二级结构变为三级结构。如果按照下面的方式进行划分一个B类网络来,则可以在整个网络中划分出254个子网,每个子网可以有254台主机。这样做可以大大减少标准IP编址中地址浪费现象。
网掩和IP地址一样是一个32位数,其对应网络地址(包括网络号和子网号)的所有位置都为1,对应于主机地址的所有位置都为。按照上图这种方式划分一个B类网络时,子网掩码为255.255.255.0。
对于一个主机或者路由器,当接收到一个数据包时2。若要判断发送数据的源主机和自己是否在同一网络时,可以将源IP地址和子网掩码进行与运算,得到源主机网络地址,并同样的方式得到自己的网络地址,然后进行比较。
五、NAT转换协议
随着互联网的发送,IP地址短缺现象越来越严重,即使是拥有几百台的大型企业,也很难申请到几个IP地址。为了解决这个问题,产生了局域网技术。对于局域网外部来说,所有主机公用一个合法IP地址。但是在局域网内部,用户使用专用IP进行相互通信。
NAT协议的功能简单来说:数据发送到外部时,将局域网内部主机的IP地址转换成一个外部公用的IP地址;数据从外部接收时,将外部公用的IP地址转换成局域网内部主机的IP地址。
NAT最常见的实现方式是端口多路复用,它基于TCP或UDP协议端口号以及IP地址来实现。
例如:某公司IP地址为222.178.197.21,局域网内部某主机IP地址为192.168.1.178,该主机正在使用TCP协议与某外部服务器进行通信,该外部主机IP地址为130.21.45.20。TCP双方,内部主机TCP端口号为1234,外部主机TCP端口号为80。
具有NAT功能的路由器会在内部维护一个NAT转换表,当路由器收到该分组时,会在表中为连接(192.168.1.78:1234,130.21.45.20:80)分配一个路由器内部的端口,假设为5678。数据发送到外部时,路由器会将数据包中的源IP和端口号,由192.168.1.78:1234改为222.178.197.21:5678;数据从外部接收时,路由器会将数据包中的目的IP和端口号,由222.178.197.21:5678改为192.168.1.78:1234。
这样经过两次NAT转换,局域网用户就实现了与外部网络的数据交互。
六、数据包格式
Ethernet II帧格式
前导码:由8个8‘b10101010构成。
以太网首部目的地址:目的设备的MAC物理地址。
源地址:发送设备的MAC物理地址。
类型:0x0800为IP协议包,0x0806为ARP协议包。
数据:数据长度最小为46字节,不足46字节时,填充至46字节。
FCS: 就是CRC校验值
其中,目的地址、源地址和类型,共同组成以太网首部
IP数据包和ARP数据包格式分别如下:
TCP数据帧封装过程举例: