网络传输

字节二面问我计算机网络的拥塞控制问题,清明节假,我终于搞明白了...

巧了我就是萌 提交于 2020-04-06 21:31:19
多点头发,少点代码 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。 https://github.com/midou-tech/articles 本来想先更新TCP的基础和TCP可靠性等问题的,但是被你们暗示了,就先更流量控制和拥塞控制了。希望龙叔讲的你能搞清楚,如果有不清楚的,可以加龙叔微信一起探讨。 龙叔的号暂时还没开通留言功能(大家要是有留言号,可以贡献一个出来喔😆),大家有什么问题就直接后台回复 龙叔 即可加龙叔微信,享受一对一技术探讨(只要是问我问题的都会回复大家,基本是在晚上十点之后和周末,做好不会秒回的心理准备) 流量控制 讲流量控制之前先花简短的话语絮叨下TCP基础知识,详细知识细节后面会出文章一一道来。 TCP是一种面向连接、保证可靠性、流式传输服务。 面向连接 就是建立链接,也就是面试常问的三次挥手建立链接,四次挥手断开链接。 保证可靠性 到是很好理解,就是你发送的数据尽最大可能保证让接收端接收到。 流式传输 就是传输的数据是以字节流的形式发送和接受(不要硬是和我说,什么字节流传输?明明物理层上都是波信号,这,抱拳。) TCP传输数据都是建立链接之后才进行传输,传输的时候为保证可靠性,也是采用确认应答机制。所谓确认应答机制就是发送数据之后必须收到确认消息,才算一次有效传输。 举个简单栗子,就是你和别人交流之前必须叫别人一声(这位先生你好

计算机网络知识

两盒软妹~` 提交于 2020-04-06 19:26:45
计算机网络 ( 英语: computer network ),通常也简称网络,是利用通信设备和线路将地理位置不同的、功能独立的多个 计算机 系统连接起来,以功能完善的网络 软件 实现网络的 硬件 、 软件 及资源 共享 和 信息 传递的系统。简单的说即连接两台或多台计算机进行 通信 的系统。 网络应用是计算机网络存在的理由,如果我们不使用任何应用,也就没有任何必要去设计它们的网络协议了。 开放系统互连基本参考模型, 只要遵守这个 OSI标准, 任何两个系统都能进行通信. OSI是七层协议体系结构, 而TCP/IP是一个四层协议体系结构, 于是我们采取折中的方法, 学习计算机网络原理的时候往往用的是五层协议的体系结构 : 物理层, 数据链路层, 网络层, 传输层和应用层。 物理层 计算机的世界里只有0和1, 正如你现在所看这篇文章的文字, 存储在计算机中也是一大串0和1的组合. 但是这些数字不能在真实的物理介质中传输的, 而需要把它转换为光信号或者电信号, 所以这一层负责将这些 比特流 (0101)与光电信号进行转换. 如果没有物理层, 那么也就不存在互联网, 不存在数据的共享, 因为数据无法在网络中流动. 数据链路层 数据在这一层不再是以比特流的形式传输, 而是分割成一个一个的帧再进行传输. 网络层 如果只有数据链路层没有网络层, 数据就只能在同一条链路上传输, 不能跨链路传输.

清明节假,终于搞明白了网络拥塞控制问题

久未见 提交于 2020-04-06 12:15:03
多点头发,少点代码 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。 https://github.com/midou-tech/articles 本来想先更新TCP的基础和TCP可靠性等问题的,但是被你们暗示了,就先更流量控制和拥塞控制了。希望龙叔讲的你能搞清楚,如果有不清楚的,可以加龙叔微信一起探讨。 龙叔的号暂时还没开通留言功能(大家要是有留言号,可以贡献一个出来喔😆),大家有什么问题就直接后台回复 龙叔 即可加龙叔微信,享受一对一技术探讨(只要是问我问题的都会回复大家,基本是在晚上十点之后和周末,做好不会秒回的心理准备) 流量控制 讲流量控制之前先花简短的话语絮叨下TCP基础知识,详细知识细节后面会出文章一一道来。 TCP是一种面向连接、保证可靠性、流式传输服务。 面向连接 就是建立链接,也就是面试常问的三次挥手建立链接,四次挥手断开链接。 保证可靠性 到是很好理解,就是你发送的数据尽最大可能保证让接收端接收到。 流式传输 就是传输的数据是以字节流的形式发送和接受(不要硬是和我说,什么字节流传输?明明物理层上都是波信号,这,抱拳。) TCP传输数据都是建立链接之后才进行传输,传输的时候为保证可靠性,也是采用确认应答机制。所谓确认应答机制就是发送数据之后必须收到确认消息,才算一次有效传输。 举个简单栗子,就是你和别人交流之前必须叫别人一声(这位先生你好

五分钟学后端技术:如何学习Java工程师必须要会的RPC

穿精又带淫゛_ 提交于 2020-04-06 05:54:34
声明 本文转自 https://developer.51cto.com/art/201906/597963.htm 什么是RPC RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。 RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有: 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。 通信框架:MINA 和 Netty。 目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。 常用的RPC框架 gRPC:是 Google 公布的开源软件,基于最新的 HTTP 2.0 协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。 Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。 用户只要在其之上进行二次开发就行,应用对于底层的 RPC 通讯等都是透明的

网络协议和管理

强颜欢笑 提交于 2020-04-06 00:37:27
1、简述osi七层模型和TCP/IP五层模型; 物理层 在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。 物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。 物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。 数据链路层 数据链路层(Data Link Layer)是OSI模型的第二层,负责建立和管理节点间的链路。该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。 在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。 该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。 MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制; LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。

网络

删除回忆录丶 提交于 2020-04-01 13:09:13
OSI 的七层模型 应用层 :网络服务与最终用户的一个接口。HTTP、FTP、RPC 表示层: 数据的表示、安全、压缩。 会话层: 建立、管理、终止会话。 传输层: 定义传输数据的协议端口号,以及流控和差错校验。TCP、UDP 网络层: 进行逻辑地址寻址,实现不同网络之间的路径选择。IP 数据链路层: 建立逻辑连接、进行 硬件地址 寻址、差错校验等功能。MAC 物理层: 建立、维护、断开物理连接。bit流 TCP和UDP UDP在传输数据时不需要建立连接,远程的主机在接收到 UDP报文 之后不需要给出确认。 虽然提供的是不可靠交付,但是在某些情况下是一种有效的工作方式(一般用于即时通信),比如QQ语音,QQ音频,直播等等。UDP支持一对一,一对多,多对一和多对多的交互通信。 TCP在传输数据之前需要先建立连接,数据传输结束后需要释放连接。并且,不提供广播或者多播。由于TCP需要提供可靠的,面向连接的传输服务,所以会增加开销,如,确认、流量控制、计时器以及连接管理等。TCP一般用于文件的传输、发送和邮件的收发、远程登录等。 TCP特点: TCP通过检验 序列号,确认应答, 重发控制 ,连接管理以及窗口控制等机制实现可靠性传输。 通过序列号与确认应答提高可靠性(传输): TCP通过肯定的确认应答ACK实现可靠的 数据传输 。当发生端将数据发送出去之后会等待对端 的确认应答

五分钟学后端技术:如何学习Java工程师必须要会的RPC

╄→尐↘猪︶ㄣ 提交于 2020-03-30 23:01:00
声明 本文转自https://developer.51cto.com/art/201906/597963.htm 什么是RPC RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。 RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有: 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。 通信框架:MINA 和 Netty。 目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。 常用的RPC框架 gRPC:是 Google 公布的开源软件,基于最新的 HTTP 2.0 协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。 Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。 用户只要在其之上进行二次开发就行,应用对于底层的 RPC 通讯等都是透明的

TCP/IP 协议栈初识

白昼怎懂夜的黑 提交于 2020-03-30 14:02:42
原文: 深入浅出 TCP/IP 协议栈 0. 简介   TCP/IP 协议栈是网络通信中一系列网络协议的综合,是核心骨架。它定义了电子设备接入因特网、以及数据在它们之间的传输方式,是一份标准。TCP/IP 协议采用 4 层结构,分别是 应用层、传输层、网络层和链路层 ,每一层都呼叫它的下一层所提供的协议来完成自己的需求。我们大部分的工作是在看得见摸得着的应用层上,所以下层的事情不用太操心;其次网络协议本身是体系复杂庞大,想要精通需要花费大量时间经历,但这不妨碍简单探索一下 一个主机上的数据要经过哪些过程才能发送到对方的主机上 。 0.5 物理介质   物理介质的重要性不言而喻,就是通过光纤、双绞线、无线电波等物理手段把电脑连接起来,电信号(0和1)在其中传输。物理介质的不同决定了电信号的出传输带宽、速率、传输距离以及抗干扰性等等。   TCP/IP 协议栈分为四层,每一层都由特定的协议与对方进行通信,协议之间的通信最终会被转化成 0、1电信号通过物理介质传输才能到达对方电脑。   下图是一张 TCP/IP 协议的基本框架:   每当通过 http 发起一个请求的时候,应用层、传输层、网络层和链路层的相关协议依次对该请求进行包装并携带对应的 首部 ,最终在链路层生成 以太网数据包 ,以太网数据包通过物理介质传输给对方主机,对方接收到数据包以后,然后再一层一层采用对应的协议进行拆包

计算机网络面试题(三)

假如想象 提交于 2020-03-30 13:42:41
计算机网络之传输层 ● 请你说明一下,TCP协议的4次握手。 考察点:TCP协议 参考回答: 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。 TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。 (1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。 (2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。 (3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。 (4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。 ● 谈一下,为什么tcp为什么要建立连接? 考察点:TCP 参考回答: 保证可靠传输。 ● 请你解释一下TCP为什么可靠一些 考察点:TCP 参考回答: 三次握手,超时重传,滑动窗口,拥塞控制。 ● 请说明一下哪种应用场景会使用TCP协议,使用它的意义 考察点:TCP协议 参考回答:

网络编程定义

非 Y 不嫁゛ 提交于 2020-03-30 13:03:53
网络编程 1.网络通讯协议 理论知识点 学习网络编程的目的? 什么是互联网 网: 由多个节点相互连接组成 渔网 蜘蛛网 计算互联网: 由多台计算机通过某种介质相互连接而组成 互联网之所以存在就是为了能让信息共享 网络编程 :指的是编写基于网络的应用程序 学习网络编程的目的 开发出一款可以利用网络来传输数据的应用程序 CS结构 建立网络至少需要两台计算机,然后使用网络来传输数据 1.网络必须联通 2.在需要访问数据一方 必须安装用于访问数据的应用程序 该应用程序称之为客户端应用程序(client) 在需要提供数据的一方 必须安装用于共享数据的应用程序 该应用程序称之为服务端应用程序(server) 简写为C/S 例如: qq 就是一个客户端 服务器在腾讯公司 腾讯视频 B/S Browser浏览器/Server 该结构下 通过传输都是HTML文本数据 学习网络编程 最终的目的就是要编写出一个基于C/S结构的应用程序 要通讯必须具备的两个条件 1.物理传播介质 (双绞线 光纤 同轴线 无线电波) 2.通讯协议 (重点) 通讯协议 是由发送方和接收方共同商定一套规范 为什么需要协议 其目的是是为了双方能正确解析数据 例如 国内通讯:双方都是用普通话 国际通信:使用英文 IBM DELL HP 早些年 每个公司都有自己一套通讯协议 这导致了 不同品牌的电脑连不了网 于是