TCP/IP协议(4):网络层
网络层上有IP、ICMP、IGMP等协议。
1、IP地址
在OSI模型中,三层网络层负责IP地址,IP数据报帧头中的源地址和目的地址就是指IP地址。IPV4类型IP地址为32位4个字节,IPV6类型IP地址为128位16个字节,公网IP是全球唯一的。32位的IPV4 IP地址通常用4个十进制的整数来表示,每个整数对应一个字节,如"106.10.21.206",这种表示方法称为“点分十进制表示法”。
IPV4类IP地址分为五类,如下图为他们各自的地址格式和地址范围:

A类IP地址第一个字节为网络地址,剩余三个字节为主机地址,默认子网掩码为255.0.0.0,可用的A类网络有126个(全0和全1的网络地址用作特殊用途,故为128-2),每个网络能容纳1亿多个主机。A类地址适用于具有大量主机(直接个人用户)而局域网络个数较少的大型网络。需要注意的是A类IP地址中以127开头的地址表示本地环回地址。
B类IP地址前两个字节为网络地址,后两个字节为主机地址,默认子网掩码为255.255.0.0,可用的B类网络有16382个,每个网络能容纳6万多个主机 。
C类IP地址前三个字节为网络地址,后一个字节为主机地址,默认子网掩码为255.255.255.0,C类网络可达209万余个,每个网络能容纳254个主机。
D类IP地址被用在多点广播(Multicast)中。
E类IP地址范为将来使用保留。
其中A类、B类、C类地址又预留了一个IP地址段作为私有地址来供局域网使用:
A类地址中:10.0.0.0--10.255.255.255
B类地址中:172.16.0.0--172.31.255.255
C类地址中:192.168.0.0--192.168.255.255
局域网在选取使用私有地址时,一般会按照实际需要容纳的主机数来选择私有地址段。常见的局域网由于其中的主机数量不是很多,所以一般就选择C类的192.168.0.0作为私有地址段使用。一般的家用路由器的LAN地址默认也是使用C类的私有地址,如192.168.1.1、192.168.0.1。
2、子网掩码
子网掩码用来设置IP地址多少位用于子网号,多少位用于主机号,它是一个32位的值,为1的位标志网络号/子网号,为0的位标志主机号,如C类地址默认子网掩码为11111111 11111111 11111111 00000000,即255.255.255.0。
假设有一个C类地址,我们需要16个子网,则子网号应为4位,因为2^4 = 16,所以子网掩码应为11111111 11111111 11111111 11110000,即255.255.255.240。
3、IP协议
IP称为网间网协议,IP协议是无连接、不可靠的,任何对数据可靠性的要求由上层协议来提供(如TCP),这样的设计成就了IP协议的效率。TCP、UDP、ICMP、IGMP等数据都以IP数据报格式传输。下图为IP报文头+数据格式:

IP首部一般为20字节,除非含有选项字段,根据IP头中的“8位协议”字段,数据选项可以分为TCP报文、UDP报文、ICMP报文等。
IP协议是Internet Protocol互联网协议,它能够使互联网上两台计算机进行通信,包装了计算机之间可以发送和接收数据,但IP协议不能解决数据包在传输过程中可能出现的协议。TCP协议是Transmission Control Protocol传输控制协议,它需要两台计算机通信之前先进行“连接”。TCP会收集IP通信的数据包,并将其按适当的次序放好传送,接收方按正确顺序接收。TCP还使用重传机制,发送方发送一个消息后需要对方的一个确认信息,如果在一定时间内没有收到的话就再次重发刚才的消息。这样TCP协议就保证了数据包在通信传输中的可靠性。
4、ICMP
ICMP互联网控制信息协议的主要功能是传输差错或信息IMCP报文,比如网络通不通、主机是否可达、路由是否可用等信息。IP包如果没有被传送到目的地,或者发生错误,IP协议不会做其它的处理,而通过ICMP,下游的路由器和主机可以将错误信息ICMP报文汇报给上游,所以ICMP是IP协议的一个补充,它还可以提供一些咨询类型的信息,比如某台计算机询问路径上的每个路由器都是谁,然后各个路由器同样用ICMP包回答。
ICMP报文是封装在IP数据报中的数据段中的,它头部的前4个字节是固定的,剩下的其它字节根据不同的类型互不相同,如下图为ICMP报文格式以及不同的类型和代码表示的不同ICMP报文。

PING命令使用的就是ICMP请求回显/回显应答报文:向目标主机发送请求回音的ICMP包(类型为8,代码为0),而目标主机在接收到该ICMP包之后,会发送回音应答的ICMP包(类型为0,代码为0)。
ICMP协议是IP协议的排错帮手,它可以帮助人们及时发现IP通信中出现的故障。但ICMP却经常被黑客借用进行网络攻击,比如利用伪造的IP包引发大量的ICMP回复,并将这些ICMP包导向受害主机,从而形成DoS攻击。
5、IGMP
IGMP互联网组管理协议,为了使路由器知道多播组成员的信息,需要利用IGMP,它负责IP 组播成员管理,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。跨越多个网络的组播转发必须依赖于路由器,路由器为建立组播转发路由必需了解每个组员在Internet中的分布,这要求主机必须能将其所在的组播组通知给本地路由器,这也是建立组播转发路由的基础,在此基础上,本地路由器再与其它组播路由器通信,传播组播组的成员信息,并建立组播路由。
和ICMP一样,IGMP也使用IP数据报传递其报文,IGMP报文封装在IP报文中。IGMP的工作过程如下:
①、当主机加入新的多播组时,向多播组的多播地址发送IGMP 报文,声明自己要成为该组的成员.本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器
②、本地多播路由器要周期性地探询本地局域网上的主机(通过发送IGMP报文来实现),以便知道这些主机是否还继续是组的成员
6、TTL
TTL(Time To Live)虽然从字面上可翻译成“可以存活的时间”,但实际上它是IP数据包在计算机网络中可以转发的最大跳数。TTL是IP协议中的一个值,它位于IP报文头的第9个字节。在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个 TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送 ICMP time exceeded消息。
TTL字段由IP数据包的发送者设置,默认情况下,Linux系统的TTL值为64或255,UNIX主机的TTL值为255,Windows XP系统的TTL值为128, Win7系统的TTL值为64, Win Server2008系统的TTL为128。
根据以上我们可以知道,ping命令中显示的TTL,对于相同系统的目标主机来说,TTL值越大表示途经的路由器越少。
TCP/IP协议(4):网络层的更多相关文章
- TCP/IP 协议图--网络层中的 IP 协议
IP(IPv4.IPv6)相当于 OSI 参考模型中的第3层——网络层.网络层的主要作用是“实现终端节点之间的通信”.这种终端节点之间的通信也叫“点对点通信”. 网络的下一层——数据链路层的主要作用是 ...
- TCP/IP协议图--网络层中的IP协议
IP(IPv4.IPv6)相当于 OSI 参考模型中的第3层--网络层.网络层的主要作用是"实现终端节点之间的通信".这种终端节点之间的通信也叫"点对点通信". ...
- TCP/IP协议 (图解+秒懂+史上最全)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- <再看TCP/IP第一卷>关于网络层及协议细节---ICMP协议几个要注意的地方
在TCP/IP协议族中,ICMP协议是一个介于网络层和传输层中间的一个协议,许多材料都会认为ICMP是网络层的一个部分,但是ICMP协议的报头是被包裹在IP协议之中的,而UDP协议又可以被ICMP协议 ...
- TCP\IP协议实践:wireshark抓包分析之链路层与网络层
目录 TCP\IP协议实践:wireshark抓包分析之链路层与网络层 从ping开始 链路层之以太网封装 ip首部 开启ping程序,开始抓包 由一个ping的结果引出来的两个协议ARP ICMP ...
- TCP/IP协议 网络层
IP协议介绍 1.IP协议是TCP/IP协议族中最为核心的协议.IP协议将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包 ...
- 门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结
门面模式的一个典型应用:Socket 套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息: 连接使用的 ...
- OSI七层模型详解 TCP/IP协议
总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...
- TCP/IP协议(二)tcp/ip基础知识
今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...
- TCP/IP协议(一)网络基础知识
参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...
随机推荐
- [LeetCode_98]Validate Binary Search Tree
题目链接 https://leetcode.com/problems/validate-binary-search-tree/ 题意 判断给定树是否是BST 思路 根据定义判断.递归. 代码 clas ...
- Java面试基础知识(1)
1.final, finally, finalize的区别 final:修饰符(关键字)如果一个类被声明为final,没有子类也不能被继承.因此一个类不能既被声明为 abstract的,又被声明为fi ...
- SVO+PL-SVO+PL-StVO
PL-SVO是基于点.线特征的半直接法单目视觉里程计,我们先来介绍一下基于点特征的SVO,因为是在这个基础上提出的. [1]References: SVO: Fast Semi-Direct ...
- 2.git使用之git fetch和git push的区别
. git fetch:相当于是从远程获取最新版本到本地,不会自动merge git fetch origin master git log -p master..origin/master git ...
- Pycharm小知识
1) 重新更改文件名称:(Shift + F6) 2) 设置IDE皮肤主题 File -> Settings -> Appearance -> Theme -> 选择“Al ...
- m0n0wall 详细介绍
pfSense就是基于m0n0wall m0n0wall,挺奇怪的软件名, M0n0wall是基于以性能和稳定性著称的FreeBSD内核的嵌入式的防火墙系统. m0n0wall对硬件要求很低,486芯 ...
- Autel MaxiSys MS906TS tire pressure settings Lexus LS460h
Use AUTEL MaxiSYS MS906TS error reader to install tire pressure Lexus LS460h in Vung Tau. Make : Lex ...
- Real-time qPCR So Easy?
Real-time qPCR So Easy? [2016-05-27] 实时荧光定量PCR技术是在定性RCR技术基础上发展起来的核酸定量技术,于1996年由美国Applied biosy ...
- IOS 将图片转换为圆角图
UIImage+wiRoundedRectImage.h #import <UIKit/UIKit.h> @interface UIImage (wiRoundedRectImage) + ...
- K-mer分析
0. 基本参数 基因组大小:G Read读长:L 总Read条数:n_r 1. 碱基深度分布 单条Read测序覆盖到某一个碱基的概率:L/G 因为L/G很小,n_r很大,每个碱基覆盖深度服从泊松分布. ...