分布式通信基础

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

11000000.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也可以关闭连接了

posted @ 2018-06-14 09:51  Fate0729  阅读(273)  评论(0编辑  收藏  举报