协议
- 协议就是约定的一种规则,例如扑克游戏中约定好的各种规则,2<3<4<5<…等,以此作为游戏规则。当所有人都遵循这个规则,那么久可以不需要任何多余的交流就可以进行游戏,这个方式形成的约定就是一种协议。
TCP/IP协议簇
-
互联网早期无法进行大规模的通信使用,因为大家虽然都懂计算机的链接原理,但是每个人的链接方式都不同,所以造成这种情况。当时就衍生出了很多为了解决当前问题的协议,比如TCP协议约定大家使用TCP链接时候传输的一种协议,HTTP协议则约定了文本传输的一种协议。
-
TCP/IP协议并不是指某一个具体的协议,它是指一系列的协议栈,因此也叫TCP/IP协议栈或者TCP/IP协议簇
-
在TCP/IP协议簇中,定义了包含对应OSI模型的每一层,上一篇中有过一个简单模型的说明。以下对OSI模型层做了细化说明处理,如下图:
-
如上图中OSI模型的七层协议,在TCP/IP中使用四层代替。
-
在TCP/IP协议簇中每一层都有对应的协议,最终组成协议簇,上一篇也有解释,但是是一个简单版本的,一下图列出了TCP/IP四层中的每个协议所在位置:
-
如上图所示,我们常看到的TCP,UDP在协议栈的传输层,而IP协议则在协议栈的网际层,还有出现次数特别多的HTTP协议是在协议栈的应用层。
-
TCP/IP协议栈被分作多个层级,目的是为了整理硬件之间通信时的一个通用的模型,每一个层级都按照指定的协议与上下层进行信息交换,上一篇中也有一个简单的说明,我们用如下图来表示
-
通过上图归纳来一下上一篇中介绍的几个层级,也就是TCP/IP协议的总体概念,但是气内部还有很多的协议,我们介绍几个比较常见的
- IP协议
- TCP协议
- UDP协议
- HTTP协议
IP协议
- IP协议处于TCP/IP协议簇的网际层。它提供不可靠的,无连接的服务,而且必须依赖其他层协议进行差错控制。在局域网环境,IP协议往往被封装在以太网帧中传送。而所有的TCP,UDP,ICMP,IGMP数据都被封装在IP数据报中传送。在IP协议中,有两个重要的内容,一个是IP地址概念,一个是IP协议报头
IP地址
-
对应IP地址我们日常中接触到很多,他给每个接入互联网的计算器一个地址,从而使得其他计算机能够访问到他。与此同时,当计算机有了地址之后,才能遵循IP协议,和其他计算机进行数据的传递。
-
IP现有目前有两种IPV4,IPV6,IPV4占用32bit,而IPV6则是32字节,128bit,IPV6可用的数量是比较大的,用来解决IPV4 不够用的情况。以IPV4 为案例
-
IPV4的32bit地址中分为两个部分:网络号和主机号。同时根据不同开头可以分为五类A,B,C,D,E
-
网络号用于区分不同的网络点,比如我们公司就是一个网络的集群,我们可以通过他的网络号码确认该公司的网关,在通过主机号码确认每一台计算机。
-
例如一个C类IP地址类型,包含21为网络号码,实际就能区分2^21 个网络号码,而每一位网络号可以区分2 ^ 8 - 2 = 254个主机(起始网络地址和最后一个为广播地址都不可用于主机)每个网络好修改一位,即使后面八位一样 那也是表示在不同网络号码下的不同主机,只不过这些主机的编码正好相同罢了,还是在不同的IP地址下。如果一个网吧采用这种方式,那么他最多能安装254台机器,如果想要更多的主机号,应该延长主机号的位数,但是相应网络号的也会减少,因为总长度是不变的
-
我们通过子网掩码能够改变网络号的主机号尾数。通常的掩码类似:
255.255.255.0
二进制表示:
11111111.11111111.11111111.00000000
- 如果一个IPV4地址:192.168.1.1,那么IP地址和掩码经过与(&)运算后的结果为:192.168.1.0(192.168.001.000),这个就是我们常说的网关。
//IP 地址二进制表示 192.168.1.1 ->
11000000.10101000.00000001.00000001
//&运算后还是得到原值 11000000.10101000.00000001.00000001
- 从192.168.1.1~ 192.168.1.254 都可以作为主机号码,也即是这个网关下,可以容纳254台机器,如果将掩码改为:
255.255.254.0
//二进制表示
11111111.11111111.11111110.00000000
- 那么与ip192.168.1.1 进行与(&)运算的结果: 192.168.0.0,这个时候使用的主机号码变成来192.168.0.0~192.168.1.254 ,即可以容纳510 台机器。
IP寻址
- 当一个IP包从一台计算器被发送,他会到达一个IP路由器。
- IP路由器负责将这个包路由到他的目的地,直接或者通过其他路由器中专。
- 在一个相同的通信中,一个包进经过的路径可能会和其他包不一样。而路由器负责根据通信量,网络中的错误,或者其他参数来进行正确寻址
IP协议的报头
- 上面的数据分层中,我们看到IP协议的构成实际上是IP报头 + TCP协议内容,
- 因此决定一个IP协议属性的关键是IP报头的内容。
- 下面我们来看IP协议的组成,IPV4 中普通的IP首部长20字节,其中32位的源IP地址和32位目的IP地址
- TTL生存时间,代表数据包可以进过最多路由次数,比如TTl是10 ,意思是经过10此路由转发还没到到达,则报文丢弃。
- 8位上层协议指的是传输层承载的协议
- 16数据报长度:指IP数据包的最大长度,16bit那么最长可以65535字节。但是通过链路的MTU不会有这么大,因此,如果数据包长度超过MTU,数据包会被分片。如果发生来分片,则需要用到16位表示以及13位分段偏移来找到分片的报文
上一篇 网络编程-网络分层的意义
下一篇 网络编程-TCP/IP协议栈-TCP协议