IP(Internet Protocol)协议主要目的是使得网络兼能够互联通信,是位于OSI模型中第三层(网络层)的协议。在因特网上,它是能使所有连接到网上的计算机网络实现互相通信的一套规则,并且规定了计算机在因特网上进行通信时应遵守的规则。
IP地址由32个二进制位组成,用来标示连接到网络的设备。IP地址采用点分四组的表示法,由下表所示:
11000000 | 10101000 | 00000000 | 00000001 |
---|---|---|---|
192 | 168 | 0 | 1 |
因此,11000000 10101000 00000000 00000001采用点分四组的表示法的IP地址为192.168.0.1
每个IP地址都包含两个部分,分别是网络地址和主机地址。网络地址用来表示设备所连接到的局域网,而主机地址则标识这个网络中的设备本身。例如,假设IP地址172.16.254.1的网络部分是前24位(172.16.254),则主机部分就是后八位(1)。处于同一个子网络的计算机的IP地址的网络部分必定是相同的。“子网掩码”就用来判断IP地址中的网络部分与主机部分。
*标示:用来标示一个数据包是否为一组分片数据包的一部分,标志字段中中间位为DF位,只有DF=0时,才允许分片。标志字段中最低位记为MF位。MF=1表示后面还有分片数据包,MF=0表示此数据包为分片中的最后一位。
从处理效率和未来网络扩展性角度考虑,IPv6中将IP地址的长度从32位升到128位。总体结构上,IPv6数据报格式与IPv4数据报格式是一样的,也是由IP报头和数据(在IPv6中称为有效载荷)这两个部分组成的,但在IPv6数据报部分还可以包括0个或者多个IPv6扩展报头。IPv6基本报头部分固定为40字节长度,而使用固定长度的基本报头简化了转发设备对IPv6报文的处理,提高了转发效率。尽管IPv6地址长度是IPv4地址长度的4倍,但IPv6基本报头的长度近为固定的IPv4报文头长度(不包括选项字段)的2倍。同时IPv6中也不允许对数据报进行重组重叠的分片。
对比IPv4数据报头部格式,IPv6去除了IPv4报头中的首部长度、标识符、标示、分片偏移、首部校验和、选项等字段,却只增加了流标签这一个字段,因此IPv6报头处理和IPv4报头处理相比大大简化,提高了处理效率。另外,IPv6为了更好地支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有的结构就能做到,理论上可以无限扩展,体现了优异的灵活性。
*下一头部:用来标识当前报头的下一个头部类型,可能为扩展报头或上层协议头部,当没有扩展报头或者为最后一个扩展报头时下一头部标示上层协议头。这一机制下处理扩展报头更高效,因为标识了数据报中对应的上层协议或者扩展报头类型,转发路由器只需处理必须处理的扩展报头,提高了转发效率。
UDP协议是位于OSI七层模型中第四层(传输层)的协议。它提供无连接的简单不可靠信息传送服务,而不提供报文到达确认、排序及流量控制等功能。同时吞吐量不受拥挤算法的调节,只受应用软件生成数据的速率、传输带宽、源端和目标端主机性能的限制。UDP使用尽最大努力交付,不保证可靠交付,因此主机不需要维持复杂的连接状态表,传输数据之前源端口和目标端口也不建立链接,仅当源需要传输数据时,UDP协议尽可能快地将数据扔到网络上。
UDP信息包的标题很短,仅包含端口信息、长度及校验和,长度仅为八字节:
TCP是一个面向连接的、可靠的、基于IP的传输层协议。它能够处理数据的顺序和错误恢复(通过序号与确认号),并且最终保证数据能够到达其应到达的端。
在通信过程中,TCP通过三次握手建立连接,通信结束后,通过四次握手断开连接。
标记 | 名称 | 作用 |
---|---|---|
URG | 紧急标志 | 表示TCP包的紧急指针域有效,敦促中间层尽快处理紧急数据 |
ACK | 确认标志 | 值为1时,表示应答域有效;反之为0 |
PSH | Push标志 | 数据包到达接收端后,不应在缓冲区排队而应立即传送给应用程序 |
RST | 连接复位 | 用来复位产生错误的链接,也被用来拒绝错误或非法的数据包 |
SYN | 同步序号 | 用来建立连接,进行TCP建立连接的三次握手 |
FIN | 传送完成 | 用来断开连接,进行TCP断开连接的四次握手 |