分布式通信基础

1.分布式通信基础思维导图2.IP协议2.1ICMP协议ICMP协议(InternetControlMessageProtocol),Internet控制报文协议,其作用就是探测网络

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120119.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java验证手机号正则表达式_Java使用正则表达式验证手机号和电话号码的方法「建议收藏」

    java验证手机号正则表达式_Java使用正则表达式验证手机号和电话号码的方法「建议收藏」一个朋友需要,所以写了这两个,话不多说,看代码中国电信号段133、149、153、173、177、180、181、189、199中国联通号段130、131、132、145、155、156、166、175、176、185、186中国移动号段134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、1…

  • 51单片机rc522程序_51单片机usb驱动

    51单片机rc522程序_51单片机usb驱动最近在某宝上买了一块RC522模块,试玩了下,读写卡正常。想学习使用新的东西时,有必要了解它的工作原理和工作过程,不清楚或者不知道的可以参考相关数据手册和参考文献,在这里为了节省自己的时间,我只对我的51程序做一个小小的笔记~~想要驱动RC522模块对IC卡(这里用的是M1卡型号是S50)进行读写操作,一定要有以下5个步骤:一、寻卡二、防冲突三、选择卡四、验证扇区密码(每个扇区都有密匙A…

  • python listnode.val(Python算法)

    在做leetcode简单题的时候发现了python的listcode,记录一下。源自:https://www.cnblogs.com/yuanmingzhou/p/9661152.htmlclassNode(object):def__init__(self):self.val=Noneself.next=NoneclassNode_handle():def__init__(self):self.cur_n

  • git使用

    git使用

  • 距离和相似度度量方法

    距离和相似度度量方法http://blog.csdn.net/pipisorry/article/details/45651315在机器学习和数据挖掘中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means)等等。不同距离度量的应用场景根据数据特性的不同,可以采用不同的度量方法。whi…

  • pycharm 激活码3月最新在线激活

    pycharm 激活码3月最新在线激活,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号