以Access sequence为例,如果你想找到系统里哪些access sequence是SAP 标准deliver的。 以这个条件做filter: ? 为什么是这三个?...因为这三个开头的都是customer 配置 ? ?
y86虽然比起x86简化了很多,但还是属于CISC,基本的指令类型有12种,很是令人头疼。此外,这一部分的lab涉及到了HDL,然而相关语法需要自己去看,也是略有不足。...操作系统部分没什么可挑剔的,进程、并发、IO与网络为了不那么抽象,特地采用posix api来做演示,是相当深入浅出的。当然,一本导论性质的书不可能讲的那么详细,需要的话还是要看《apue》。...网络 计算机网络 计算机网络:自顶向下方法 这两本书前者是自底向上,后者是自顶向下。可以互相补充着看。另外不要再看谢希仁那本书了,那本书都是他让手下的研究生一章一章凑的,没有多大价值。...TCP/IP详解 卷1:协议 TCP/IP详解 卷2:实现 TCP/IP详解 卷3:TCP事务协议、HTTP、NNTP和UNIX域协议 作为TCP/IP的权威指南,这三本还是挺晦涩难懂的。...HTTP权威指南 作为一名开发者,我们其实只需要关注传输层和应用层的东西。了解HTTP,对于一个web开发者来说,是极其有利的。至少能理清请求的来龙去脉,避免写出来那种跳来跳去的实现。
1、LwIP简介 LwIP 全名为 Light weight IP,意思是轻量化的 TCP/IP 协议, 是瑞典计算机科学院(SICS)的 Adam Dunkels 开发的一个小型开源的 TCP/IP...此外 LwIP既可以移植到操作系统上运行,也可以在无操作系统的情况下独立运行。 LwIP有无操作系统的支持都可以运行。...另外,它对内核中会使用到操作系统功能的地方进行了抽象,使用了一套自定义的 API,用户可以通过自己实现这些 API,从而实现跨操作系统的移植工作。 ...主要缺点是应用程序不 能使自己陷入长期的连续运算中,这样会导致通讯性能下降,原因是TCP/IP处理与连续运算是不能并行发生的。...讲到这里,读者应该知道tcpip_input()函数投递的消息从哪里来的答案了吧,没错,它们来自于由底层网络驱动组成的接收线程。我们在编写网络驱动时, 其接收部分以任务的形式创建。
相比之下,UNIX操作系统却是一个例外。这是一个通用的多用户分时交互型的操作系统。它首先建立的是一个精干的核心,而其功能却足以与许多大型的操作系统相媲美,在核心层以外,可以支持庞大的软件系统。...其实TCP/IP协议族已经帮我们解决了这个问题,网络层的ip地址可以唯一标识网络中的主机,而传输层的协议+端口可以唯一标识主机中的应用程序(进程)。...1974年,出现了连接分组网络的协议,其中就包括了TCP/IP——著名的网际互联协议IP和传输控制协议TCP。这两个协议相互配合,其中,IP是基本的通信协议,TCP是帮助IP实现可靠传输的协议。...应用层:是TCP/IP协议的第一层,是直接为应用进程提供服务的。 运输层:作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。...例如,HTML中的标记说明了哪个文本是标题元素的一部分,哪个文本是段落元素的一部分,哪个文本是项目列表元素的一部分。其中一种重要的标记类型是文本链接标记。
OSI open-system-InterconnectionTCP/IP 5层协议栈应用层和操作系统的边界是 系统调用 ,对应到网络编程是socket apiTCP/UDP 概况TCP粘包问题TCP/...图片OSI实际并没有落地,TCP/IP 5层协议栈是目前主流的落地实现。...不管是OSI还是TCP/IP5层协议栈,均会出现应用程序和操作系统边界(代码执行在用户态/内核态)。...这里我要给自己强调的是:开发者对于tcp一定不要带入http请求-响应模型,tcp是双向通信流。...HTTP 超文本传输协议的规定如下: 图片旁白梳理了整个TCP/IP协议栈各层封包逻辑, 我们就知道粘包、拆包一直都存在,只是拆到TCP层的时候,我们没有办法区分应用层断续发送的请求/调用, 这就是我们口口相传的
socket是操作系统提供的TCP/IP的薄层封装,大大简化了TCP/IP的使用 借助于socket通信的过程大致分为下面四个过程 创建套接字 连接阶段 通信阶段 断开阶段 web服务器会先创建套接字...socket是对TCP/IP协议的封装,所以本质还是TCP/IP,接下来的TCP/IP中会继续介绍 ?...答案是通过路由表,这是操作系统实现的功能,其实也还是借助于各种协议来生成的,说白了就是计算规则,先找到下一个中转设备的IP地址 然后再借助于ARP协议,查询MAC地址 在windows下可以通过命令 route...注意,以上TCP、IP、链路层的处理,都是由操作系统以及网卡驱动程序按照TCP/IP的协议以及以太网等相关技术实现的 上面各个模块功能的划分描述只是大致的一般性的 操作系统到底实现到协议的哪一部分以及网卡驱动到底实现到哪一部分的细节...MAC,所以可以作为接收方,网卡将光电信号转换为数据,然后进行数据校验,MAC检验,确认是发给自己的 然后就根据路由表进行转发,这个路由表跟操作系统的路由表一样的逻辑原理 这一步又跟操作系统IP模块的处理差不多
创建完套接字之后,协议栈需要返回标识符号也就是描述符用于标识是哪一个套接字在进行传数据,因为我们可能打开很多套接字连接访问不同的网站,具体的效果是我们浏览器会打开很多个页面,这时候每一个页面都可能需要创建套接字...端口可以简单看作应用程序的入口,DNS解析的IP只能知道主机在哪但是本身发往哪个应用程序是不清楚的,我们可以想象DNS解析类似地图上告诉我们高速的收费站坐标,但是他并不知道对应数据送往那个闸口)。...(服务端结束TCP连接要比客户端早一些)图片套接字和协议栈和对方服务器的交互流程细节还是比较多的,这里可以发现实际上三次握手和四次挥手实际上只是网络连接当中很小的一部分,最后是从连接服务到数据收发到断开连接的一张简单总结图...图片把存放数据的网络包进行拆分,可以看到下面的TCP/IP 包结构:我们可以简单把头部和数据看做是平时的快递,头部是面单,指示从哪里到哪里,然后这个“快递”会通过网络转发设备的查表操作判断传输到那个方向...小结实际上网络包的封装应该范围三个部分:第一部分是TCP模块组织头部信息和数据包(当然也可能没有数据只有控制信息)。第二部分是把整个TCP模块塞到IP模块的后面,然后经过网卡发送出去。
现在我们可以认为数据包已经发送到了某台计算机中,但是计算机中有很多程序,你这个数据包是发给哪个程序的呢? TCP 如何判断是哪个端口的呢?...现在我们知道了, Socket 和 TCP/IP 没有必然联系,Socket 的出现只是方便了 TCP/IP 的使用,如何方便使用呢?你可以直接使用下面 Socket API 的这些方法。...,当我们的程序要使用某个资源的时候,可以向操作系统申请,再由操作系统为我们的程序分配和管理资源。...而当我们的程序要使用网络时,要使用到对应的操作系统内核的操作和网卡设备,所以我们可以向操作系统申请,然后系统会为我们创建一个套接字 Socket,并返回这个 Socket 的ID,以后我们的程序要使用网络资源...操作系统分配的端口号 第二种分配端口号的方式是一种动态分配法,在这种方法下,客户端应用程序可以完全不用自己设置端口号,凭借操作系统进行分配,操作系统可以为每个应用程序分配互不冲突的端口号。
在这个函数里面,摘掉三层的头,看看到底是发送给自己的,还是希望自己转发出去的; 如果IP地址不是自己的,那就应该转发出去;如果IP地址是自己的,那就是发给自己的。...所谓的二层设备、三层设备只是跑在设备上的程序不同; 二层设备:只把MAC头摘下来,看看到底是丢弃、转发,还是自己留着; 三层设备:把MAC头摘下来之后,再把IP头摘下来,看看到底是丢弃、转发,还是自己留着...前一部分是网络号,后一部分是主机号。...平时我们在办公室、学校、家里的IP地址,一般都是私有IP地址,因为这些地址,允许组织内部的IP地址自己管理、自己分配,因此可以重复。...默认的DHCP Server是需要配置的,无非是我们配置IP的时候所需要的IP地址段、子网掩码、网关地址、租期等。
细心的读者会注意到我们还没有真正创建一个 Service - 其实这是我们有意的。...default” 是我们正在操作的 Namespace。”svc” 表示这是一个 Service。”cluster.local” 是您的集群域,在您自己的集群中可能会有所不同。...问题四: Service能够通过IP访问吗 假设我们可以确认 DNS 工作正常,那么接下来要测试的是您的 Service 是否工作正常。...我们来确认一下,一部分一部分来。 确认 kube-proxy 正在您的 Nodes 上运行。...IPVS 代理将为每个服务器地址(例如集群 IP、外部 IP、节点端口 IP、负载均衡 IP等)创建虚拟服务器,并为服务的端点创建一些相应的真实服务器(如果有)。
浏览器搜索自己的 DNS 缓存(浏览器维护一张域名与 IP 地址的对应表);如果没有命中,进入下一步; 搜索操作系统中的 DNS 缓存;如果没有命中,进入下一步; 搜索操作系统的 hosts 文件( Windows...环境下,维护一张域名与 IP 地址的对应表);如果没有命中,进入下一步; 操作系统将域名发送至 LDNS (本地区域名服务器),LDNS 查询自己的 DNS 缓存(一般命中率在 80% 左右),查找成功则返回结果...的 IP 地址; LDNS 将得到的 IP 地址返回给操作系统,同时自己也将 IP 地址缓存起来;操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起来。...TCP 的缓存就讲到这里,感兴趣的可以自己翻阅资料。...六、HTTP 请求缓存( CDN 节点缓存、代理服务器缓存、浏览器缓存、后端动态计算结果缓存等 ) 在建立了 TCP 连接之后,就开始 HTTP 请求了;而 HTTP 缓存是优化性能不可忽视的一部分,这一部分我会着重讲解
前面几篇文章讲解的是应用程序使用Socket间接通知协议栈进行的连接,通信阶段,那么从现在开始讲解协议栈和网卡驱动的故事回顾上篇文章,我们从第一阶段创建套接字,协议栈返回描述符讲起~~~协议栈结构首先来看下协议栈的大致结构...:图片应用程序代表客户端,浏览器,电子邮件等程序,这些程序发出请求委派给下一层的SocketSocket程序解析器也是Socket的一部分用于DNS服务查询域名的IP地址,其他部分就是委派操作系统的协议栈去处理数据了操作系统操作系统的协议栈分为两部分...这个步骤主要的工作是:填补客户端和服务端套接字的控制信息也可以说是通信双方交换各自的控制信息并记录如对方的ip和port配置信息,这里的连接是指通信前的准备工作上一篇介绍查看套接字的命令时,可以看到很多信息...协议栈的tcp模块根据ip地址和端口号接着创建tcp头部信息讲这些信息填入,协议栈的tcp模块也就知道了服务器的ip和端口 接着委托ip模块 和服务器的ip模块发送数据服务端填补信息和客户端不一样,创建套接字是服务器启动就会执行的...套接字信息还有一类信息是用于控制协议栈操作的,这部分是套接字保存的信息,不同操作系统协议栈实现不同,但套接字保存的内容有一些是共通都需要的,只要这部分信息能够确定就可以进行通信,不需要考虑不同操作系统不同协议栈导致的差异我正在参与
今天,通过几个 case 就“分层”话题梳理下自己的思考,其中,有些 case 比较直观,而有些不那么直观,甚至有些微妙,需要我们自己多品味。...这意味着学习过程需要我们不断将新知识与旧知识进行关联,形成自己的知识体系,而非一个个知识孤岛。 1什么是分层设计?它有何好处? ?...不管是 ARM 体系结构,还是 X86,选择一个进程调度的算法是可以相同的,需要改变的进程切换相关代码,因为不同的硬件平台的上下文是不同的,CPU 的寄存器也不同。...DNS (domain name system) 是域名系统,是用来将主机转换为 IP 地址的服务。我们有至少三种方式在互联网上标识一台主机、主机名、IP 地址以及 MAC 地址。...TCP/IP 协议栈 ? 前面铺垫这么久,就是为了自然过渡到上面的图,请务必与 TCP/IP 协议栈进行对比。 socket。
一、前言 网络通讯在系统交互中是必不可少的一部分,无论是面试还是工作中都是绕不过去的一部分,本节我们来谈谈Java网络编程中的一些知识,本chat内容如下: 网络通讯基础知识,剖析网络通讯的本质和需要注意的点...ip所在主机,则网卡驱动会吧二进制流依次转换为 数据链路层数据帧、ip包、传输层tcp包或者udp包,最后交给应用程序进程进行处理,应用程序转换包为具体数据然后进行处理。...一次网络通讯看此很复杂,中间需要做好多协议包的转换,但是好在除了应用层协议部分是需要应用程序自己来做,其他下层都是由网卡驱动程序来完成的,这些对应用程序是透明的。 ......当应用程序读取数据时候是需要把操作系统层面的读buffer里面的数据拷贝到应用程序层面的读buffer里面。...5.2 使用ByteBuffer分配堆内存与堆外内存 Java NIO中提供了一个ByteBuffer用来分配发送和接受缓存用的,其分为两种模式的内存,一个是我们常用的堆内存,一个是堆外内存(直接内存)
创建完套接字之后,协议栈需要返回标识符号也就是描述符用于标识是哪一个套接字在进行传数据,因为我们可能打开很多套接字连接访问不同的网站,具体的效果是我们浏览器会打开很多个页面,这时候每一个页面都可能需要创建套接字...端口可以简单看作应用程序的入口,DNS解析的IP只能知道主机在哪但是本身发往哪个应用程序是不清楚的,我们可以想象DNS解析类似地图上告诉我们高速的收费站坐标,但是他并不知道对应数据送往那个闸口)。...(服务端结束TCP连接要比客户端早一些) 套接字和协议栈和对方服务器的交互流程细节还是比较多的,这里可以发现实际上三次握手和四次挥手实际上只是网络连接当中很小的一部分,最后是从连接服务到数据收发到断开连接的一张简单总结图...把存放数据的网络包进行拆分,可以看到下面的TCP/IP 包结构: 我们可以简单把头部和数据看做是平时的快递,头部是面单,指示从哪里到哪里,然后这个“快递”会通过网络转发设备的查表操作判断传输到那个方向。...小结 实际上网络包的封装应该范围三个部分: 第一部分是TCP模块组织头部信息和数据包(当然也可能没有数据只有控制信息)。 第二部分是把整个TCP模块塞到IP模块的后面,然后经过网卡发送出去。
今天,通过几个 case 就“分层”话题梳理下自己的思考,其中,有些 case 比较直观,而有些不那么直观,甚至有些微妙,需要我们自己多品味。...这意味着学习过程需要我们不断将新知识与旧知识进行关联,形成自己的知识体系,而非一个个知识孤岛。 1. 什么是分层设计?它有何好处? ?...不管是 ARM 体系结构,还是 X86,选择一个进程调度的算法是可以相同的,需要改变的进程切换相关代码,因为不同的硬件平台的上下文是不同的,CPU 的寄存器也不同。...图片 DNS (domain name system) 是域名系统,是用来将主机转换为 IP 地址的服务。我们有至少三种方式在互联网上标识一台主机、主机名、IP 地址以及 MAC 地址。...TCP/IP 协议栈 ? 图片 前面铺垫这么久,就是为了自然过渡到上面的图,请务必与 TCP/IP 协议栈进行对比。 socket。
就像前面一样,这里的内容仅仅是为了步骤的执行 - 在这里您可以使用自己的 Service 细节。...default” 是我们正在操作的 Namespace。”svc” 表示这是一个 Service。”cluster.local” 是您的集群域,在您自己的集群中可能会有所不同。...问题4:Service 能够通过 IP 访问么? 假设我们可以确认 DNS 工作正常,那么接下来要测试的是您的 Service 是否工作正常。...我们来确认一下,一部分一部分来。 确认 kube-proxy 正在您的 Nodes 上运行。...IPVS 代理将为每个服务器地址(例如集群 IP、外部 IP、节点端口 IP、负载均衡 IP等)创建虚拟服务器,并为服务的端点创建一些相应的真实服务器(如果有)。
default” 是我们正在操作的 Namespace。”svc” 表示这是一个 Service。”cluster.local” 是您的集群域,在您自己的集群中可能会有所不同。...问题四: Service能够通过IP访问吗 假设我们可以确认 DNS 工作正常,那么接下来要测试的是您的 Service 是否工作正常。...我们来确认一下,一部分一部分来。 确认 kube-proxy 正在您的 Nodes 上运行。...访问日志取决于您的 Node 操作系统。在某些操作系统是一个文件,如 /var/log/messages kube-proxy.log,而其他操作系统使用 journalctl 访问日志。...IPVS 代理将为每个服务器地址(例如集群 IP、外部 IP、节点端口 IP、负载均衡 IP等)创建虚拟服务器,并为服务的端点创建一些相应的真实服务器(如果有)。
theme: condensed-night-purple 前面几篇文章讲解的是应用程序使用Socket间接通知协议栈进行的连接,通信阶段,那么从现在开始讲解协议栈和网卡驱动的故事 回顾上篇文章,我们从第一阶段创建套接字...的一部分用于DNS服务查询域名的IP地址,其他部分就是委派操作系统的协议栈去处理数据了 操作系统 操作系统的协议栈分为两部分,上半部分为TCP/UDP协议;下半部分为IP协议;IP协议部分用于接受TCP...在图中还可以看到有ICMP和ARP,ICMP用于表示网络包传输过程中出现的错误,ARP是用于根据IP查询MAC地址(为什么需要MAC地址呢?...因为操作系统是委托网卡的,网卡需要知道MCA地址) 驱动程序 网卡驱动程序用于控制网卡,IP协议向网卡驱动程序发送的数字信号接下来会被网卡转换数为电信号在网线中传输。...netstat命令用于查看套接字内容 proto协议类型tcp或者udp协议 localaddress “:”前面代表本机使用的ip地址(ip地址本来是网卡才有的,因为计算机内部有很多网卡,所以也就说计算机有很多
1.什么是TCP/IP、UDP?...TCP/IP协议族包括运输层、网络层、链路层,而Socket所在位置如图,Socket是应用层与TCP/IP协议族通信的中间软件抽象层。 它是一组接口。...说白了Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。...套接字API最初是作为UNIX操作系统的一部分而开发的,所以套接字API与系统的其他I/O设备集成在一起。...操作系统就创建一个文件描述符提供给应用程序访问文件。从应用程序的角度看,文件描述符是一个整数,应用程序可以用它来读写文件。
领取专属 10元无门槛券
手把手带您无忧上云