如图,主机下方的灰色比特唯一标识一台主机: image.png ant 发送数据时,在最前面加上两个比特(红色)用于标识来源机器, 00 表示 ant ;另外两个比特(绿色)用于标识目标机器, 01 表示...当 bee 收到数据后,检查前两个比特(红色),值为 00 ,便知道它是 ant 发出来的;检查紧接着的两个比特(绿色),值为 01 ,与自己匹配上,便愉快地收下了。...通过新引入的紫色比特,我们在同个信道上实现了不同的通讯! 接下来,从理论的视角来审视这个场景: image.png 信道只有一个,却要承载多样的通讯任务。...在发送端,通过加入紫色比特,将不同的数据通过一个共用信道发送出去,这个过程叫做 复用 ( Multiplexing );在接收端,从共用信道上接收数据,然后检查紫色比特决定数据如何处理,这个过程叫做 分用...在接下来的章节,我们将看到 复用分用 的思想贯彻计算机网络的始终。 到目前为止,我们引入了 3 种不同的比特,分别是 源地址 、 目的地址 以及 数据类型 。
所以当A的IP地址是192.168.0.105 时,那么B的IP地址可以配成192.168.0.106 。 关于IP这一块是啥,后面会细讲,大家如果没明白我说的是啥,不要急。...用于将IP地址解析为以太网的MAC地址的协议。 在局域网中,当主机A有数据要发送给主机B时,A必须知道B的IP地址。...FCS里存放的是发送方通过循环冗余校验CRC计算得到的值。 接收方用收到的数据算一次CRC,与FCS里的值进行对比。 如果一致,那证明数据没问题。如果出错,则直接丢弃。...路由器通过192.168.0.105/24获得其网络号是 192.168.0.0 ,而目的地的网络号是192.168.1.0,二者网络号不同,处于不同局域网。...为什么UDP不粘包? 别说了,一起在知识的海洋里呛水吧
,也不存在leader的说法 还有memcache集群,集群里面的机器之间彼此无心跳,通过一致性hash尽可能将key值的存储分散化,降低单一memcahe服务器down机的影响。...还有一类是主从复制,主节点负责写,从节点负责读,提高读的性能。从节点定期通过心跳与主节点沟通,一旦主节点挂掉了,从节点马上接手主节点的任务 对于分布式应用,难以避免出现网络的抖动。...传统方式是采用一个备用节点,这个备用节点定期给当前主节点发送ping包,主节点收到ping包以后向备用节点发送回复Ack,当备用节点收到回复的时候就会认为当前主节点还活着,让他继续提供服务 ?...在集群初始化阶段,当有一台服务器Server1启动时,其单独无法进行和完成Leader选举,当第二台服务器Server2启动时,此时两台机器可以相互通信,每台机器都试图找到Leader,于是进入Leader...在第一轮中,按照“我最牛逼,我怕谁”的原则,每个节点都推荐它自己为集群的leader节点 按照我们假设的理想条件,节点S1首先收到了S2发送来的推荐者“2”,节点S1发现“2”要比它之前推荐的“1”(也就是它自己
) 296 路径MTU:假设两台主机之间的通信要通过多个网络,那么每一个网络的链路层就可能有不同的MTU。...重要的不是两台主机所在网络的MTU的值,重要的是两台通信主机路径中的最小MTU。它被称作路径MTU。 Tcp传输中的nagle算法 TCP/IP协议中。不管发送多少数据。...我在发送端,固定每帧数据85个,间隔100ms发送一次,我在接受端(堵塞方式使用)接受的数据是43 138交替出现,可能就是这个算法的时间阈值问题,假设关闭Nagle算法,在接收端就能够保证数据每次接收到的都是...为了避免小数据包拥塞网络。Microsoft TCP栈默认启用了Nagle算法,这个算法可以将应用程序多次 调用Send发送的数据拼接起来,当收到前一个数据包的ACK确认信息时,一起发送出去。...第一个股票编号信息通过命令通道发送到服务端。马上接收到 服务端通过数据通道返回的股票报价信息。然后。client马上发送第二条请求信息。send调用马上返回, 发送的数据被拷贝到内核缓冲区。
当网络层的服务质量不能满足要求时,它将提高服务,以满足高层的要求;而当网络层服务质量较好时,它只需进行很少的工作。...OSI模型的第六层:表示层 表示层的作用是管理数据的解密与加密,如常见的系统口令处理,当你的账户数据在发送前被加密,在网络的另一端,表示层将对接收到的数据解密。...总结: OSI七层模型有效的解决了不同网络体系互连时所遇到的兼容性问题,它的出现减轻了网络的复杂程度,一旦网络发生故障,可迅速定位故障所处层次,便于查找和纠错;通过在各层上定义标准接口,它使同属一层的不同网络设备间能实现互操作...网络接口层:这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。 网络层:负责相邻计算机之间的通信。其功能包括三方面。...一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
而IP地址,仅仅是解决了两台物理机器之间的相互通信的识别问题,我们还要解决是在这两台计算机之间的进程间的通信,就是怎么知道计算机A发出的信息是要传给计算机B中的某个进程呢?这就需要端口号了!...因此,端口号的作用是唯一标识一台机器上的唯一一个进程!通过IP+端口号port,就能够标识互联网中的唯一一个进程!...既然说端口号port是进程的一个身份,那么进程的PID按理论上来说,也能通过PID来进行网络上的进程间通信,那么为什么还需要一个port呢?...那么如何定义网络数据流的地址呢? 网络数据流觉得这样分来分去太麻烦了,这样吧!我就使用大端的形式吧!...总结一下网络字节序: ⭐发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出。 ⭐接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存。
同一个vlan同一个网段的ip地址能够直接互通,那么同一个vlan不同的网段能不能互通呢?本期我们推荐一篇文章,可以解决大家在网络中遇到的一些奇怪的问题,也是加深对网络的理解。...unreachable 显然,A机器发现对方与自己不是同一网段,试图寻找网关,但网关不存在,所以报主机不可达,B上的Sniffer未抓到任何包,观察网卡也是只发不收,显然数据没有出去。...2、PING和网关同一网段的IP。 超时,B上接到的是A发出的关于11.1.1.2的ARP广播,由于不存在11.1.1.2这个地址,所以没有机器回应。...3、PING和谁都不在一个网段的IP 超时,B上接到是A发出的关于100.1.1.1的ARP广播,由于不存在100.1.1.1这个地址,所以没有机器回应。...从上面的3个实验来看,当网关设置成自己的时候,不管PING的地址是什么,计算机发出的ARP广播都是直接询问PING中所指定IP对应的MAC,没有询问网关的MAC,这符合卷一上的描述,其实计算机在广播询问
在局域网中,我们需要和另外的机器通信时,只需要知道他的硬件地址,交换机就会把我们的消息发送到对应的机器。...我的手机同时和两个不同机器进行通信。那么当我的手机收到数据时,如何区分是微信的数据,还是王者的数据?...基本模型如下: 发送方需要根据接收方的缓冲区大小,设置自己的可发送窗口大小,处于窗口内的数据表示可发送,之外的数据不可发送; 当窗口内的数据接收到确认回复时,整个窗口会往前移动,直到发送完成所有的数据...当窗口值到达ssthresh值,这个值是需要通过实时网络情况设置的一个窗口限制值,开始进入拥塞避免,每轮把窗口值提升1,慢慢试探网络的底线。...当机器A收到机器B的FIN包时,理想状态下,确实是可以直接关闭连接了;但是: 我们知道网络是不稳定的,可能机器B 发送了一些数据还没到达(比FIN包慢); 同时回复的ACK包可能丢失了,机器B会重传
在IP协议中,通过IP地址来表示标识一台主机,并通过路由表的方式规划两台主机之间的数据传输线路(路由)。 数据链路层 负责设备之间数据帧的传送和识别。...有两台主机想要建立连接 A发送了一个SYN=1的报文给B,尝试建立连接。 B收到请求后,立刻发送一个ACK=1的报文确认应答,同时第一时间发送一个SYN为1的报文,也尝试与A建立连接。...通过三次握手,让发送方和接收方在正式连接之前先通通气,选择一些传输中合适的参数,比如:TCP传输数据的序号从几开始。 为什么TCP是三次握手?能不能是两次握手?...有可能是三次,虽然ack和fin是不同时机触发的,但是在延时应答和捎带应答的情况下是有可能合并在一起的。 四次挥手一定会执行吗?...假如接收缓冲区为1M,一次收到500k的数据,如果立刻应答,返回的窗口就是500k,但是实际上接收端处理数据很快,如果在等一小会,窗口里的数据就全部处理完了,所以我们可以在保证网络不阻塞,数据不丢失的前提下
下面解释一下这三个状态位: ACK:用于对收到的数据进行确认,所确认的数据由确认序列号表示。 SYN:用作建立连接时的同步信号 FIN:表示后面没有数据需要发送,通常意昧着所建立的连接需要关闭了。...第二步: B 机器收到 A机器发过来的数据包后,通过 SYN 得知这是一个建立连接的请求,于是发送一个响应包并将 SYN 、ACK 标记都置为 1。...第一是为了保证两台机器信息对等,确保两台机器都没有什么问题: 只有三次握手之后才能够保证两台服务器都完全没有问题,各自具备发报和收报能力。...因为TTL 网络报文的生存时间往往都会超 TCP 请求超时时间,如果两次握手就可以创建连接 ,传输数据并释放连接后,第一个超时的连接请求才到达 B 机器的话,B 机器会以为是 A 创建新连接的请求,然后确认同意创建连接...当 A 说“不玩了”,A 就进入 FIN_WAIT_1 的状态,B 收到“A 不玩”的消息后,发送知道了,B 就进入 CLOSE_WAIT 的状态。
海翎光电的小编整理了一篇文章,可以解决大家在网络中遇到的一些奇怪的问题,也是可以加深对网络的理解。 一、同 VLAN 不同网段能否 Ping 通? ...显然,A 机器发现对方与自己不是同一网段,试图寻找网关,但网关不存在,所以报主机不可达,B 上的 Sniffer 未抓到任何包,观察网卡也是只发不收,显然数据没有出去。 ...2、PING 和网关同一网段的 IP 超时。B 上接到的是 A 发出的关于 11.1.1.2 的 ARP 广播,由于不存在 11.1.1.2 这个地址,所以没有机器回应。 ...3、PING 和谁都不在一个网段的 IP 超时。B 上接到是 A 发出的关于 100.1.1.1 的 ARP 广播,由于不存在 100.1.1.1这个地址,所以没有机器回应。 ...从上面的所有实验看出,计算机在与非本网段的地址通信时,计算机首先查找网关的 MAC,如果网关 MAC 得不到回应,是不会对 PING 作出响应的;因此,实例中 1 和 2 的情况是属于特殊情况,正好利用了网关与主机
在局域网中,我们需要和另外的机器通信时,只需要知道他的硬件地址,交换机就会把我们的消息发送到对应的机器。...我的手机同时和两个不同机器进行通信。那么当我的手机收到数据时,如何区分是微信的数据,还是王者的数据?那么就必须在网络层之上再添加一层:运输层 : ?...当窗口内的数据接收到确认回复时,整个窗口会往前移动,直到发送完成所有的数据 在TCP的首部有一个窗口大小字段,他表示接收方的剩余缓冲区大小,让发送方可以调整自己的发送窗口大小。...当窗口值到达ssthresh值,这个值是需要通过实时网络情况设置的一个窗口限制值,开始进入拥塞避免,每轮把窗口值提升1,慢慢试探网络的底线。...当机器A收到机器B的FIN包时,理想状态下,确实是可以直接关闭连接了;但是: 我们知道网络是不稳定的,可能机器B 发送了一些数据还没到达(比FIN包慢); 同时回复的ACK包可能丢失了,机器B会重传FIN
在局域网中,我们需要和另外的机器通信时,只需要知道他的硬件地址,交换机就会把我们的消息发送到对应的机器。...我的手机同时和两个不同机器进行通信。那么当我的手机收到数据时,如何区分是微信的数据,还是王者的数据?...当窗口内的数据接收到确认回复时,整个窗口会往前移动,直到发送完成所有的数据 在TCP的首部有一个窗口大小字段,他表示接收方的剩余缓冲区大小,让发送方可以调整自己的发送窗口大小。...当窗口值到达ssthresh值,这个值是需要通过实时网络情况设置的一个窗口限制值,开始进入拥塞避免,每轮把窗口值提升1,慢慢试探网络的底线。...当机器A收到机器B的FIN包时,理想状态下,确实是可以直接关闭连接了;但是: 我们知道网络是不稳定的,可能机器B 发送了一些数据还没到达(比FIN包慢); 同时回复的ACK包可能丢失了,机器B会重传FIN
在局域网中,我们需要和另外的机器通信时,只需要知道他的硬件地址,交换机就会把我们的消息发送到对应的机器。...我的手机同时和两个不同机器进行通信。那么当我的手机收到数据时,如何区分是微信的数据,还是王者的数据?...当窗口内的数据接收到确认回复时,整个窗口会往前移动,直到发送完成所有的数据。 在TCP的首部有一个窗口大小字段,他表示接收方的剩余缓冲区大小,让发送方可以调整自己的发送窗口大小。...当窗口值到达ssthresh值,这个值是需要通过实时网络情况设置的一个窗口限制值,开始进入拥塞避免,每轮把窗口值提升1,慢慢试探网络的底线。...当机器A收到机器B的FIN包时,理想状态下,确实是可以直接关闭连接了;但是: 我们知道网络是不稳定的,可能机器B 发送了一些数据还没到达(比FIN包慢); 同时回复的ACK包可能丢失了,机器B会重传
报头中就会包含源IP和目的IP 源IP地址:发送数据报那个主机的IP地址,目的IP地址:想发送到的那个主机的IP地址 我们把数据从一台主机传递到另一台主机不是真正目的,真正通信的不是这两个机器,其实是这两台机器上面的软件...而我们之前说过进程间通信的本质是看到同一份资源,现在这个资源就是网络 通信的本质就是IO,因为我们上网的行为就两种情况:1.把数据发送出去 2.接收到数据。...所以我们在发送数据的时候也要把自己的IP和端口号发送过去,因为数据还要被发送回来。...接收数据同理 如何定义网络数据流的地址: 发送主机把发送缓冲区中的数据按内存地址从低到高的顺序发出 接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存 也就是说先发出的数据是低地址...而为了方便,设计者只设计了一套接口,就可以通过不同的参数,解决所有网络或者其他场景下的通信问题。
可根据需求灵活设置特定VLAN的数据帧在发送时是否打标记(Trunk接口只能设置一个VLAN在发送数据帧时不打标记,而hybrid接口则可设置多个VLAN在发送数据帧时不打标记)。...Hybrid口发送帧 当该帧的VLAN-ID是接口允许通行的VLAN时,发送该帧,此时可以通过命令设置发送时是否携带Tag。 VLAN 及 Trunk 的基础配置 1....实际的需求是,在SW1上完成相应的配置,使得其在GE6/0/15接口上收到源地址为10.10.10.0/24网段的数据时,将其识别为VLAN10的数据,收到源地址为10.10.20.0/24的数据时,将其识别为...在不同的网络规划或不同厂商设备的QinQ报文中,VLAN-Tag的TPID字段可能被设置为不同的值。为了和现有网络规划兼容,设备提供了QinQ报文外层VLAN-Tag的TPID值可修改的功能。...用户通过配置TPID的值,使得发送到公网中的QinQ报文携带的TPID值与当前网络配置相同,从而实现与现有网络的兼容。 再看另一个例子,拓扑如下图所示。
但是系统中,同时会存在非常多的进程,当数据到达目标主机之后,怎么转发给目标进程?这就要在网络的背景下,在系统中,标识主机的唯一性。 在进行网络通信的时候,是不是我们的两台机器在进行通信呢?...网络协议中的下三层,主要解决的是,数据安全可靠的送到远端机器 用户使用应用层软件,完成数据发送和接收的 先把这个软件启动起来-->进程 日常网络通信的本质:就是进程间通信!!...可靠的、基于字节流的传输层通信协议 TCP协议是面向连接的,如果两台主机之间想要进行数据传输,那么必须要先建立连接,当连接建立成功后才能进行数据传输。...它用于在计算机网络中进行数据通信时,统一数据的字节顺序,确保数据在不同主机之间传输时能够被正确解释。...总的来说,就是如果当前发送主机是小端, 就需要先将数据转成大端;否则就忽略, 直接发送即可 注意事项 发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出 接收主机把从网络上接收到的字节依次保存在接收缓冲区中
什么是分布式服务系统 分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是http service来交互的。...什么是分布式一致性 分布式系统通常由异步网络连接的多个节点构成,每个节点有独立的计算和存储,节点之间通过网络通信进行协作。...同一份数据的多个副本必须保证一致,而数据的多个副本又存储在不同的节点中,这里的分布式一致性问题就是存储在不同节点中的数据副本(或称为变量)的取值必须一致。...我感觉是可以accept多个的,但是书上又写了每一个Acceptor最多就只能批准一个提案。但后边也写了改变accept的值,不懂。。。。。。。...在集群初始化阶段,当有一台服务器Server1启动时,其单独无法进行和完成Leader选举,当第二台服务器Server2启动时,此时两台机器可以相互通信,每台机器都试图找到Leader,于是进入Leader
所以两台计算机在技术层面上用特定的方式来做好 双方通信时候的协议约定 2.网络协议初识 网络通信时,会有那些需求要解决,要有那些问题会产生,为什么会产生问题?...长距离传送时,信号会衰减,所以数据有可能异常(数据丢失) ---- 要发送的机器是在远端的,网络上的机器有很多 如何能够将机器数据发送后准确找到网络当中其中一台机器 2.定位一台主机的问题 ---- 因为网络太长了...就可以通过进入房间从而一起玩游戏 两个主机通信的本质是 两个主机的操作系统与网络协议栈在通信 数据在两台通信机器中如何流转 同层的每一层都是一种协议,每层都要有自己的协议 协议的表现形式:协议报头体现出来的...(表现形式为报头) 每一层协议都要有各自的协议报头,加上有效载荷 如:收到一个包裹,包裹上面的纸称为报头,包裹里的东西称之为有效载荷 ---- 当要发送消息时,并不是将消息直接发送给对方,先添加自己应用层的报头...也可以从路由器主机交付到右侧主机 ---- 以太网和令牌环中存在更多的主机 当要发送消息时,并不是将消息直接发送给对方,先添加自己应用层的报头,然后将报头与有效载荷交付给下一层 当数据达到数据链路层时
领取专属 10元无门槛券
手把手带您无忧上云