分布式通信基础
1. 分布式通信基础思维导图
2. IP协议
2.1 ICMP协议
ICMP协议(Internet Control Message Protocol),Internet控制报文协议,其作用就是探测网络连接,该协议提供了简单的出错报告信息,发送的出错报文会返回到发送数据的源端,发送端随后可根据ICMP报文确定发生错误的类型,并确定如何才能更号地重发失败的数据包。需要注意的是ICMP只负责报告错误,而如何处理特定的错误,则由发送端自己决定。
2.2 IPV4协议头部
(1)版本:对于IPv4版本的IP协议来说,其值是4
(2)首部长度:用于指定当前IP头部的总长度(单位为32位),由于该字段为4位,所以最大十进制为15,IP协议头部的总长度为15*32/8 = 60字节
(3)服务类型:用于分配优先级、延迟、吞吐量以及可靠性,该字段的最高3bit用于定义IP优先级,可以定义8种不同的服务优先级。其次第3到第6bit用于定义最低延迟、最高吞吐量、可靠性和最小开销,而最后1bit则必须置0,注意,第3至第6bit的定义中,至多只能有一位置1,应用程序需要根据特定需求来进行置位
(4)长度:定义整个IP数据报的总字长
(5)认证:用于对IP数据报进行唯一标识,其值从一个随机数开始,随着发送的IP数据报每次加1,不过,对于字长超过MTU的IP数据报,拆分后发送的数据报具有相同的认证
(6)标志:该字段长度为3位,第一位为保留字段,第2位置1则表示禁止对IP数据报拆分,如果将该位置置为1,那么网络层将不会对IP数据报进行拆分,取而代之的是返回一个ICMP差错报文,第3位表示是否含有更多的分片,除了最后一个分片以外,其它IP数据报都应该置为1
(7)段偏移量:表示分片相对于原始IP数据报开始处的偏移量
(8)TTL:用于指定数据报到达目的地之前允许经过的最大路由跳数
(9)协议:表示当前上层所使用的协议类型
(10)校验和:通过CRC算法计算出来,用于检查接收到的数据是否正确
(11)源IP地址
(12)目的IP地址
(13)选项:40字节
2.3 路由与转发规则
确定了路由之后,将IP报文封装成数据链路层的帧并转发到对应端口上。
路由匹配规则:
(1)路由最长匹配原则:我们优先选择子网掩码最长的路由表项进行匹配,因为掩码越长,表示网络号越长,代表其网络范围越小,越精确
(2)路由迭代查找原则
(3)默认路由匹配原则:在路由器中加入一条IP地址和子网掩码均为0.0.0.0的路由表项
子网掩码的有趣解释:
作者:车小胖
链接:https://www.zhihu.com/question/56895036/answer/150953183
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
从前有一个地主,有256间房子,地主家的门牌号码是“192.168.1”,那么他家第一间房子的门牌号码是192.168.1.0,第二间是192.168.1.1,…第256间的编号是192.168.1.255。
地主老了,需要把256间房子分给4个儿子,平均分配,每个儿子可以分64间。
请来一位先生主持公道,先生这么来操作:
192.168.1.0-192.168.1.63 分给大儿子
192.168.1.64-192.168.1.127 分给二儿子
192.168.1.128 -192.168.1.191 分给三儿子
192.168.1.192-192.168.1.255 分给四儿子那如何来描述四个儿子的子网网段呢?
192.168.1.0/26
192.168.1.64/26
192.168.1.128/26
192.168.1.192/26/26是什么鬼?
255.255.255.192的二进制是多少? “11111111-11111111-11111111-11”大家数数一共多少个1?不用数了,是26个1,为了简化子网掩码的表示,用/26代替255.255.255.192。按位与运算
我们来看大儿子的网段192.168.1.0/26是如何得到的?以大儿子的房间为例:
192.168.1.0-192.168.1.63二进制表示:
192.168.1.011000000.10101000.00000001.00000000
192.168.1.63
11000000.10101000.00000001.00111111
首尾地址完全相同的是多少?
11000000.10101000.00000001.00数数一共多少位?26位!那么用这个“192.168.1.0/26”就可以表示大儿子所有房间。
对照房间的门牌号码“192.168.1.199”,很显然属于四儿子的。
一个主机192.168.1.199/26 能否和直连主机192.168.1.200/24 通信?可以的,因为都是四儿子的房间。
一个主机192.168.1.199/26 能否和直连主机
192.168.1.1/24 通信? 不可以,因为一个是大儿子的房间,一个是四儿子的房间,无法直连通信!
3. TCP协议
TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP协议支持超时重传和确认机制,确保了发送消息的可靠性
3.1 TCP协议头部结构
3.2 3次握手和4次分手协议
A. 3次握手协议
(1)第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号
(2)第二次握手:服务器收到SYN包,必须确认客户SYN(ack=j+1),同时发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态
(3)第三次握手:客户端收到SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接状态),完成3次握手
B. 4次分手协议
(1)第一次分手:主机1(可以是客户端也可以是服务器),设置Sequence Number和Acknowledge NUmber,向主机2发送一个FIN报文段;此时主机1进入FIN_WAIT_1状态,这表示主机1没有数据要发送到主机2
(2)第二次分手:主机2收到主机1发送的FIN报文段,向主机1回复一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态,主机2告诉主机1,为同意你的关闭请求
(3)第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入CLOSE_WAIT状态
(4)第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态,主机2收到主机1的ACK报文段以后就关闭连接,此时,主机1等待2MSL后依然没有收到回复,证明server端已正常关闭,那号,主机1也可以关闭连接了