首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

飞龙程序员书单 - 组原、OS、网络

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开发者来说,极其有利。至少能理清请求来龙去脉,避免写出来那种跳来跳去实现。

40030
您找到你想要的搜索结果了吗?
是的
没有找到

1、LwIP简介「建议收藏」

1、LwIP简介   LwIP 全名为 Light weight IP,意思轻量化 TCP/IP 协议, 瑞典计算机科学院(SICS) Adam Dunkels 开发一个小型开源 TCP/IP...此外 LwIP既可以移植到操作系统上运行,也可以在无操作系统情况下独立运行。   LwIP有无操作系统支持都可以运行。...另外,它对内核中会使用到操作系统功能地方进行了抽象,使用了一套自定义 API,用户可以通过自己实现这些 API,从而实现跨操作系统移植工作。   ...主要缺点应用程序不 能使自己陷入长期连续运算中,这样会导致通讯性能下降,原因TCP/IP处理与连续运算是不能并行发生。...讲到这里,读者应该知道tcpip_input()函数投递消息从哪里来答案了吧,没错,它们来自于由底层网络驱动组成接收线程。我们在编写网络驱动时, 其接收部分以任务形式创建

1.7K30

小谈WEB简史

相比之下,UNIX操作系统却是一个例外。这是一个通用多用户分时交互型操作系统。它首先建立一个精干核心,而其功能却足以与许多大型操作系统相媲美,在核心层以外,可以支持庞大软件系统。...其实TCP/IP协议族已经帮我们解决了这个问题,网络层ip地址可以唯一标识网络中主机,而传输层协议+端口可以唯一标识主机中应用程序(进程)。...1974年,出现了连接分组网络协议,其中就包括了TCP/IP——著名网际互联协议IP和传输控制协议TCP。这两个协议相互配合,其中,IP基本通信协议,TCP帮助IP实现可靠传输协议。...应用层:TCP/IP协议第一层,直接为应用进程提供服务。 运输层:作为TCP/IP协议第二层,运输层在整个TCP/IP协议中起到了中流砥柱作用。...例如,HTML中标记说明了哪个文本是标题元素一部分,哪个文本是段落元素一部分,哪个文本是项目列表元素一部分。其中一种重要标记类型文本链接标记。

61630

粘包拆包问题一直都存在,只是到TCP就拆不动了。

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时候,我们没有办法区分应用层断续发送请求/调用, 这就是我们口口相传

16810

网络如何连接?网络发展简介(四)

socket操作系统提供TCP/IP薄层封装,大大简化了TCP/IP使用 借助于socket通信过程大致分为下面四个过程 创建套接字 连接阶段 通信阶段 断开阶段 web服务器会先创建套接字...socketTCP/IP协议封装,所以本质还是TCP/IP,接下来TCP/IP中会继续介绍 ?...答案通过路由表,这是操作系统实现功能,其实也还是借助于各种协议来生成,说白了就是计算规则,先找到下一个中转设备IP地址 然后再借助于ARP协议,查询MAC地址 在windows下可以通过命令 route...注意,以上TCPIP、链路层处理,都是由操作系统以及网卡驱动程序按照TCP/IP协议以及以太网等相关技术实现 上面各个模块功能划分描述只是大致一般性 操作系统到底实现到协议一部分以及网卡驱动到底实现到哪一部分细节...MAC,所以可以作为接收方,网卡将光电信号转换为数据,然后进行数据校验,MAC检验,确认发给自己 然后就根据路由表进行转发,这个路由表跟操作系统路由表一样逻辑原理 这一步又跟操作系统IP模块处理差不多

3.9K50

《网络怎么样连接》读书笔记 - TcpIP连接(二)

创建完套接字之后,协议栈需要返回标识符号也就是描述符用于标识哪一个套接字在进行传数据,因为我们可能打开很多套接字连接访问不同网站,具体效果我们浏览器会打开很多个页面,这时候每一个页面都可能需要创建套接字...端口可以简单看作应用程序入口,DNS解析IP只能知道主机在哪但是本身发往哪个应用程序不清楚我们可以想象DNS解析类似地图上告诉我们高速收费站坐标,但是他并不知道对应数据送往那个闸口)。...(服务端结束TCP连接要比客户端早一些)图片套接字和协议栈和对方服务器交互流程细节还是比较多,这里可以发现实际上三次握手和四次挥手实际上只是网络连接当中很小一部分,最后从连接服务到数据收发到断开连接一张简单总结图...图片把存放数据网络包进行拆分,可以看到下面的TCP/IP 包结构:我们可以简单把头部和数据看做平时快递,头部面单,指示从哪里到哪里,然后这个“快递”会通过网络转发设备查表操作判断传输到那个方向...小结实际上网络包封装应该范围三个部分:第一部分TCP模块组织头部信息和数据包(当然也可能没有数据只有控制信息)。第二部分把整个TCP模块塞到IP模块后面,然后经过网卡发送出去。

63130

传输层通信秘籍|轻松掌握网络通信奥秘

现在我们可以认为数据包已经发送到了某台计算机中,但是计算机中有很多程序,你这个数据包发给哪个程序呢? TCP 如何判断哪个端口呢?...现在我们知道了, Socket 和 TCP/IP 没有必然联系,Socket 出现只是方便了 TCP/IP 使用,如何方便使用呢?你可以直接使用下面 Socket API 这些方法。...,当我们程序要使用某个资源时候,可以操作系统申请,再由操作系统我们程序分配和管理资源。...而当我们程序要使用网络时,要使用到对应操作系统内核操作和网卡设备,所以我们可以操作系统申请,然后系统会为我们创建一个套接字 Socket,并返回这个 Socket ID,以后我们程序要使用网络资源...操作系统分配端口号 第二种分配端口号方式一种动态分配法,在这种方法下,客户端应用程序可以完全不用自己设置端口号,凭借操作系统进行分配,操作系统可以为每个应用程序分配互不冲突端口号。

24060

计算机网络协议——通信协议综述

在这个函数里面,摘掉三层头,看看到底发送给自己还是希望自己转发出去; 如果IP地址不是自己,那就应该转发出去;如果IP地址自己,那就是发给自己。...所谓二层设备、三层设备只是跑在设备上程序不同; 二层设备:只把MAC头摘下来,看看到底丢弃、转发,还是自己留着; 三层设备:把MAC头摘下来之后,再把IP头摘下来,看看到底丢弃、转发,还是自己留着...前一部分网络号,后一部分主机号。...平时我们在办公室、学校、家里IP地址,一般都是私有IP地址,因为这些地址,允许组织内部IP地址自己管理、自己分配,因此可以重复。...默认DHCP Server需要配置,无非我们配置IP时候所需要IP地址段、子网掩码、网关地址、租期等。

38930

【前端词典】从输入 URL 到展现涉及哪些缓存环节

浏览器搜索自己 DNS 缓存(浏览器维护一张域名与 IP 地址对应表);如果没有命中,进入下一步; 搜索操作系统 DNS 缓存;如果没有命中,进入下一步; 搜索操作系统 hosts 文件( Windows...环境下,维护一张域名与 IP 地址对应表);如果没有命中,进入下一步; 操作系统将域名发送至 LDNS (本地区域名服务器),LDNS 查询自己 DNS 缓存(一般命中率在 80% 左右),查找成功则返回结果... IP 地址; LDNS 将得到 IP 地址返回给操作系统,同时自己也将 IP 地址缓存起来;操作系统IP 地址返回给浏览器,同时自己也将 IP 地址缓存起来。...TCP 缓存就讲到这里,感兴趣可以自己翻阅资料。...六、HTTP 请求缓存( CDN 节点缓存、代理服务器缓存、浏览器缓存、后端动态计算结果缓存等 ) 在建立了 TCP 连接之后,就开始 HTTP 请求了;而 HTTP 缓存优化性能不可忽视一部分,这一部分我会着重讲解

1.2K70

计算机网络:协议栈套接字如何连接?

前面几篇文章讲解应用程序使用Socket间接通知协议栈进行连接,通信阶段,那么从现在开始讲解协议栈和网卡驱动故事回顾上篇文章,我们从第一阶段创建套接字,协议栈返回描述符讲起~~~协议栈结构首先来看下协议栈大致结构...:图片应用程序代表客户端,浏览器,电子邮件等程序,这些程序发出请求委派给下一层SocketSocket程序解析器也是Socket一部分用于DNS服务查询域名IP地址,其他部分就是委派操作系统协议栈去处理数据了操作系统操作系统协议栈分为两部分...这个步骤主要工作:填补客户端和服务端套接字控制信息也可以说是通信双方交换各自控制信息并记录如对方ip和port配置信息,这里连接指通信前准备工作上一篇介绍查看套接字命令时,可以看到很多信息...协议栈tcp模块根据ip地址和端口号接着创建tcp头部信息讲这些信息填入,协议栈tcp模块也就知道了服务器ip和端口 接着委托ip模块 和服务器ip模块发送数据服务端填补信息和客户端不一样,创建套接字服务器启动就会执行...套接字信息还有一类信息用于控制协议栈操作,这部分套接字保存信息,不同操作系统协议栈实现不同,但套接字保存内容有一些共通都需要,只要这部分信息能够确定就可以进行通信,不需要考虑不同操作系统不同协议栈导致差异我正在参与

17220

我对软件分层设计思考

今天,通过几个 case 就“分层”话题梳理下自己思考,其中,有些 case 比较直观,而有些不那么直观,甚至有些微妙,需要我们自己多品味。...这意味着学习过程需要我们不断将新知识与旧知识进行关联,形成自己知识体系,而非一个个知识孤岛。 1什么分层设计?它有何好处? ?...不管 ARM 体系结构,还是 X86,选择一个进程调度算法可以相同,需要改变进程切换相关代码,因为不同硬件平台上下文不同,CPU 寄存器也不同。...DNS (domain name system) 域名系统,用来将主机转换为 IP 地址服务。我们有至少三种方式在互联网上标识一台主机、主机名、IP 地址以及 MAC 地址。...TCP/IP 协议栈 ? 前面铺垫这么久,就是为了自然过渡到上面的图,请务必与 TCP/IP 协议栈进行对比。 socket。

34610

Java网络编程基础篇

一、前言 网络通讯在系统交互中必不可少一部分,无论面试还是工作中都是绕不过去一部分,本节我们来谈谈Java网络编程中一些知识,本chat内容如下: 网络通讯基础知识,剖析网络通讯本质和需要注意点...ip所在主机,则网卡驱动会吧二进制流依次转换为 数据链路层数据帧、ip包、传输层tcp包或者udp包,最后交给应用程序进程进行处理,应用程序转换包为具体数据然后进行处理。...一次网络通讯看此很复杂,中间需要做好多协议包转换,但是好在除了应用层协议部分需要应用程序自己来做,其他下层都是由网卡驱动程序来完成,这些对应用程序透明。 ......当应用程序读取数据时候需要把操作系统层面的读buffer里面的数据拷贝到应用程序层面的读buffer里面。...5.2 使用ByteBuffer分配堆内存与堆外内存 Java NIO中提供了一个ByteBuffer用来分配发送和接受缓存用,其分为两种模式内存,一个我们常用堆内存,一个堆外内存(直接内存)

1.2K10

《网络怎么样连接》读书笔记 - TcpIP连接(二)

创建完套接字之后,协议栈需要返回标识符号也就是描述符用于标识哪一个套接字在进行传数据,因为我们可能打开很多套接字连接访问不同网站,具体效果我们浏览器会打开很多个页面,这时候每一个页面都可能需要创建套接字...端口可以简单看作应用程序入口,DNS解析IP只能知道主机在哪但是本身发往哪个应用程序不清楚我们可以想象DNS解析类似地图上告诉我们高速收费站坐标,但是他并不知道对应数据送往那个闸口)。...(服务端结束TCP连接要比客户端早一些) 套接字和协议栈和对方服务器交互流程细节还是比较多,这里可以发现实际上三次握手和四次挥手实际上只是网络连接当中很小一部分,最后从连接服务到数据收发到断开连接一张简单总结图...把存放数据网络包进行拆分,可以看到下面的TCP/IP 包结构: 我们可以简单把头部和数据看做平时快递,头部面单,指示从哪里到哪里,然后这个“快递”会通过网络转发设备查表操作判断传输到那个方向。...小结 实际上网络包封装应该范围三个部分: 第一部分TCP模块组织头部信息和数据包(当然也可能没有数据只有控制信息)。 第二部分把整个TCP模块塞到IP模块后面,然后经过网卡发送出去。

48440

我对软件分层设计思考

今天,通过几个 case 就“分层”话题梳理下自己思考,其中,有些 case 比较直观,而有些不那么直观,甚至有些微妙,需要我们自己多品味。...这意味着学习过程需要我们不断将新知识与旧知识进行关联,形成自己知识体系,而非一个个知识孤岛。 1. 什么分层设计?它有何好处? ?...不管 ARM 体系结构,还是 X86,选择一个进程调度算法可以相同,需要改变进程切换相关代码,因为不同硬件平台上下文不同,CPU 寄存器也不同。...图片 DNS (domain name system) 域名系统,用来将主机转换为 IP 地址服务。我们有至少三种方式在互联网上标识一台主机、主机名、IP 地址以及 MAC 地址。...TCP/IP 协议栈 ? 图片 前面铺垫这么久,就是为了自然过渡到上面的图,请务必与 TCP/IP 协议栈进行对比。 socket。

62820

全网最详细 K8s Service 不能访问排查流程

就像前面一样,这里内容仅仅是为了步骤执行 - 在这里您可以使用自己 Service 细节。...default” 我们正在操作 Namespace。”svc” 表示这是一个 Service。”cluster.local” 集群域,在您自己集群中可能会有所不同。...问题4:Service 能够通过 IP 访问么? 假设我们可以确认 DNS 工作正常,那么接下来要测试 Service 是否工作正常。...我们来确认一下,一部分一部分来。 确认 kube-proxy 正在您 Nodes 上运行。...IPVS 代理将为每个服务器地址(例如集群 IP、外部 IP、节点端口 IP、负载均衡 IP等)创建虚拟服务器,并为服务端点创建一些相应真实服务器(如果有)。

2.7K20

k8s service不能访问排错

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等)创建虚拟服务器,并为服务端点创建一些相应真实服务器(如果有)。

1.5K40

协议栈——创建套接字

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地址本来网卡才有的,因为计算机内部有很多网卡,所以也就说计算机有很多

62610
领券