计算机网络

深入浅出计算机组成原理学习笔记:DMA:为什么Kafka这么快?(第48讲)

时光总嘲笑我的痴心妄想 提交于 2019-11-28 15:52:48
一、引子 过去几年里,整个计算机产业届,都在尝试不停地提升I/O设备的速度。把HDD硬盘换成SSD硬盘,我们仍然觉得不够快;用PCI Express接口的SSD硬盘替代SATA接口的SSD硬盘, 我们还是觉得不够快,所以,现在就有了傲腾(Optane)这样的技术。 但是,无论I/O速度如何提升,比起CPU,总还是太慢。SSD硬盘的IOPS可以到2万、4万,但是我们CPU的主频有2GHz以上,也就意味着每秒会有20亿次的操作。 如果我们对于I/O的操作,都是由CPU发出对应的指令,然后等待I/O设备完成操作之后返回,那CPU有大量的时间其实都是在等待I/O设备完成操作。 但是,这个CPU的等待,在很多时候,其实并没有太多的实际意义。我们对于I/O设备的⼤量操作,其实都只是把内存里面的数据,传输到I/O设备而已。 在这种情况下,其实CPU只是在傻等而已。特别是当传输的 因此,计算机工程师们,就发明了DMA技术,也就是 直接内存访问(Direct Memory Access)技术,来减少CPU等待的时间。 二 、理解DMA,一个协处理器 1、什么是DMA? 其实DMA技术很容易理解,本质上,DMA技术就是我们在主板上放⼀块独立的芯片。在进行内存和I/O设备的数据传输的时候,我们不再通过CPU来控制数据传输, 而直接通过 DMA控制器(DMA?Controller,简称DMAC)。这块芯片

【计算机基础】计算机网络

为君一笑 提交于 2019-11-28 14:51:42
一、从输入URL到页面返回的过程 DNS 通过访问的域名找到对应的IP地址; 向服务器发送一个request; 服务器接受到request,进行处理并返回response; 页面下载相关资源(如图片、CSS样式表、JS文件等)并显示response内容。 二、Http与Https 1、HTTP和HTTPS的基本概念 HTTP(HyperText Transfer Protocol,超文本传输协议):是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少; HTTPS(Secure Hypertext Transfer Protocol,安全超文本传输协议):是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。 2、HTTP与HTTPS的区别 https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用; http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议; http和https使用的是完全不同的连接方式

socket编程为什么需要htons(), ntohl(), ntohs(),htons() 函数

元气小坏坏 提交于 2019-11-28 14:46:42
https://blog.csdn.net/myyllove/article/details/83380209 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数。 网络字节顺序与本地字节顺序之间的转换函数: htonl()--"Host to Network Long" ntohl()--"Network to Host Long" htons()--"Host to Network Short" ntohs()--"Network to Host Short" 之所以需要这些函数是因为计算机数据表示存在两种字节顺序:NBO与HBO 网络字节顺序NBO(Network Byte Order): 按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。 主机字节顺序(HBO,Host Byte Order): 不同的机器HBO不相同,与CPU设计有关,数据的顺序是由cpu决定的,而与操作系统无关。 如 Intelx86结构下,short型数0x1234表示为34 12, int型数0x12345678表示为78 56 34 12 如IBM power PC结构下,short型数0x1234表示为12 34, int型数0x12345678表示为12 34

python之socket(套接字)

孤街醉人 提交于 2019-11-28 13:18:36
一、客户端/服务器架构 1.1基本概念 客户端/服务器架构即:C/S架构,包括: (1)硬件C/S架构(打印机) (2)软件C/S架构(Web服务器) 1.2举例 生活中的C/S架构:饭店为S端,所有食客C端 二、TCP/udp/osi七层 2.1TCP/UDP协议 TCP (Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;电子邮件、文件传输程序。 UDP (User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文,尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。 2.1tcp的三次握手 所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示: TCP三次握手 (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 (2

网络编程,TCP编程

寵の児 提交于 2019-11-28 11:09:25
1 网络 编程 1.1 网络 概念 把 多 台 计算机通过物理线路连接起来,就形成了网络。 目的 在于 交换 数据和共享信息。 1.1.1 网络 通信的三要素 【 1 】 IP 地址 : 唯一标识网络上的每一台计算机。两台计算机之间通信的必备有素 【 2 】端口号 : 计算机中应用的标号 ( 代表一个应用程序 ) 0-1024 系统使用或保留端口 常见端口 :http:80 stmp: 25 ftp:21 有效端口 0-65536,开发者 可以的端口是 1025-65536之间 。 一些 第三方引用 如mysql:3306 oracle:1251。 【 3 】通信协议 : 通信的规则 TCP,UDP 1.1.2 网络 通信模型 IP 地址分类 特殊IP 0.0.0.0 :本机 127.0.0.1 :本机回环地址,用于本机测试 255.255.255.255 :当前子网,一般用于向当前子网广播信息 1.2 InetAddress InetAddress 表示IP 地址。 public class Test01 { public static void main(String[] args) { // 获取本机 IP 地址 InetAddress ip1; try { ip1 = InetAddress. getLocalHost (); // USER-20180113BT/192

计算机网络面试题4

醉酒当歌 提交于 2019-11-28 10:28:51
计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。一个很形象地比喻就是我们的语言,我们大天朝地广人多,地方性语言也非常丰富,而且方言之间差距巨大。A地区的方言可能B地区的人根本无法接受,所以我们要为全国人名进行沟通建立一个语言标准,这就是我们的普通话的作用。同样,放眼全球,我们与外国友人沟通的标准语言是英语,所以我们才要苦逼的学习英语。   计算机网络协议同我们的语言一样,多种多样。而ARPA公司与1977年到1979年推出了一种名为ARPANET的网络协议受到了广泛的热捧,其中最主要的原因就是它推出了人尽皆知的TCP/IP标准网络协议。目前TCP/IP协议已经成为Internet中的“通用语言”,下图为不同计算机群之间利用TCP/IP进行通信的示意图。 回到顶部 1. 网络层次划分   为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层

什么是socket

纵饮孤独 提交于 2019-11-28 08:54:03
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的 进程通信 机制,取后一种意思。通常也称作" 套接字 ",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的 主机 一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。 现象解释: Socket非常类似于电话插座。以一个国家级电话网为例,电话的通话双方相当于相互通信的2个进程,区号是它的 网络地址 ;区内一个单位的交换机相当于一台 主机 ,主机分配给每个用户的局内号码相当于Socket号

什么是socket

你。 提交于 2019-11-28 08:53:36
要写网络程序就必须用 Socket ,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会 Socket 编程?一般来说,很多人都会说, Socket 编程基本就是 listen , accept 以及 send , write 等几个基本的操作。是的,就跟常见的文件操作一样,只要写过就一定知道。 对于网络编程,我们也言必称 TCP/IP ,似乎其它网络协议已经不存在了。对于 TCP/IP ,我们还知道 TCP 和 UDP ,前者可以保证数据的正确和可靠性,后者则允许数据丢失。最后,我们还知道,在建立连接前,必须知道对方的 IP 地址和端口号。除此,普通的程序员就不会知道太多了,很多时候这些知识已经够用了。最多,写服务程序的时候,会使用多线程来处理并发访问。 我们还知道如下几个事实: 1 。一个指定的端口号不能被多个程序共用。比如,如果 IIS 占用了 80 端口,那么 Apache 就不能也用 80 端口了。 2 。很多防火墙只允许特定目标端口的数据包通过。 3 。服务程序在 listen 某个端口并 accept 某个连接请求后,会生成一个新的 socket 来对该请求进行处理。 于是,一个困惑了我很久的问题就产生了。如果一个 socket 创建后并与 80 端口绑定后,是否就意味着该 socket 占用了 80 端口呢?如果是这样的,那么当其 accept 一个请求后

基于socket的TCP和UDP编程

十年热恋 提交于 2019-11-28 08:51:04
一、概述   TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。   TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套 接口 是字节流套接口( ST ream socket )的一种。   UDP:用户数据报协议。UDP是一种无连接协议。UDP套接口是数据报套接口(datagram Socket )的一种。   二、TCP和UDP介绍   1)基本TCP客户— 服务器 服务器   服务器是指在网络环境下运行相应的应用软件,为网上用户提供共享信息资源和各种服务的一种高性能计算机,英文名称叫做Server。 [全文] 程序设计基本框架   说明:(三路握手)   1.客户端发送一个SYN段(同步序号)指明客户打算连接的 服务器 服务器   服务器是指在网络环境下运行相应的应用软件,为网上用户提供共享信息资源和各种服务的一种高性能计算机,英文名称叫做Server。 端口,以及初始化序号(ISN) 。   2.服务器发回包含服务器的初始序号的SYN报文段作为应答。同时,将确认序号(ACK)设置为客户的ISN加1以对客户的SYN 报文段进行确认。一个SYN将占用一个序号。   3.客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认。   2) 基本TCP客户

四级网络知识点(二)

帅比萌擦擦* 提交于 2019-11-28 07:12:44
操作系统原理和计算机网络 196.用户程序不能直接使用特权指令 197.若用户程序在用户态下执行了特权指令,则引起访管中断,这也是CPU由用户态向核心态转换的方法 198.数据传送完毕、设备出错、键盘输入,均产生I/O中断 199.多道程序指令设计指的是:允许多个程序同时进入一个计算机系统的主存储器,并启动进行计算的方法 200.从微观上看,部分程序使用CPU,部分程序使用外部设备; 从宏观上看,CPU与外部设备始终可以并行工作,这样可以使得CPU的运行效率达到最大化,不至于空闲 201.Linux上进程有五种状态: 运行:正在运行或运行队列中等待; 中断:休眠中,受阻,在等待某个条件的形成或接受到信号; 不可中断:收到信号不唤醒和不可运行,进程必须等待直到有中断发生; 僵死:进程已终止,但进程描述符存在,直到父进程调用 wait4()系统调用后释放; 停止:进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号停止运行 202.线程操作pthread_yield表示线程让出CPU 203.非抢占式调度的操作系统中,正在运行的进程用完时间片, 正在运行的进程出错,正在运行的进程等待I/O事件均能产生进 程调度。新创建的进程只能进入就绪队列,无法引起进程调度 204.一个进程在等待另一个进程向它发送消息,则两进程关系为同步关系 205.没有说明有共享资源、相互调用