网络层上有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):网络层的更多相关文章

  1. TCP/IP 协议图--网络层中的 IP 协议

    IP(IPv4.IPv6)相当于 OSI 参考模型中的第3层——网络层.网络层的主要作用是“实现终端节点之间的通信”.这种终端节点之间的通信也叫“点对点通信”. 网络的下一层——数据链路层的主要作用是 ...

  2. TCP/IP协议图--网络层中的IP协议

    IP(IPv4.IPv6)相当于 OSI 参考模型中的第3层--网络层.网络层的主要作用是"实现终端节点之间的通信".这种终端节点之间的通信也叫"点对点通信". ...

  3. TCP/IP协议 (图解+秒懂+史上最全)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  4. <再看TCP/IP第一卷>关于网络层及协议细节---ICMP协议几个要注意的地方

    在TCP/IP协议族中,ICMP协议是一个介于网络层和传输层中间的一个协议,许多材料都会认为ICMP是网络层的一个部分,但是ICMP协议的报头是被包裹在IP协议之中的,而UDP协议又可以被ICMP协议 ...

  5. TCP\IP协议实践:wireshark抓包分析之链路层与网络层

    目录 TCP\IP协议实践:wireshark抓包分析之链路层与网络层 从ping开始 链路层之以太网封装 ip首部 开启ping程序,开始抓包 由一个ping的结果引出来的两个协议ARP ICMP ...

  6. TCP/IP协议 网络层

    IP协议介绍 1.IP协议是TCP/IP协议族中最为核心的协议.IP协议将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包 ...

  7. 门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结

    门面模式的一个典型应用:Socket 套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息: 连接使用的 ...

  8. OSI七层模型详解 TCP/IP协议

      总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...

  9. TCP/IP协议(二)tcp/ip基础知识

    今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...

  10. TCP/IP协议(一)网络基础知识

    参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...

随机推荐

  1. [LeetCode_98]Validate Binary Search Tree

    题目链接 https://leetcode.com/problems/validate-binary-search-tree/ 题意 判断给定树是否是BST 思路 根据定义判断.递归. 代码 clas ...

  2. Java面试基础知识(1)

    1.final, finally, finalize的区别 final:修饰符(关键字)如果一个类被声明为final,没有子类也不能被继承.因此一个类不能既被声明为 abstract的,又被声明为fi ...

  3. SVO+PL-SVO+PL-StVO

    PL-SVO是基于点.线特征的半直接法单目视觉里程计,我们先来介绍一下基于点特征的SVO,因为是在这个基础上提出的. [1]References:      SVO: Fast Semi-Direct ...

  4. 2.git使用之git fetch和git push的区别

    . git fetch:相当于是从远程获取最新版本到本地,不会自动merge git fetch origin master git log -p master..origin/master git ...

  5. Pycharm小知识

    1)  重新更改文件名称:(Shift + F6) 2) 设置IDE皮肤主题 File -> Settings ->  Appearance -> Theme -> 选择“Al ...

  6. m0n0wall 详细介绍

    pfSense就是基于m0n0wall m0n0wall,挺奇怪的软件名, M0n0wall是基于以性能和稳定性著称的FreeBSD内核的嵌入式的防火墙系统. m0n0wall对硬件要求很低,486芯 ...

  7. 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 ...

  8. Real-time qPCR So Easy?

    Real-time qPCR So Easy? [2016-05-27]       实时荧光定量PCR技术是在定性RCR技术基础上发展起来的核酸定量技术,于1996年由美国Applied biosy ...

  9. IOS 将图片转换为圆角图

    UIImage+wiRoundedRectImage.h #import <UIKit/UIKit.h> @interface UIImage (wiRoundedRectImage) + ...

  10. K-mer分析

    0. 基本参数 基因组大小:G Read读长:L 总Read条数:n_r 1. 碱基深度分布 单条Read测序覆盖到某一个碱基的概率:L/G 因为L/G很小,n_r很大,每个碱基覆盖深度服从泊松分布. ...