《操作系统真象还原》——0.13 什么是工程,什么是协议

简介: 全部文件包含实际代码和环境配置两部分。实际代码部分,除了自己写的代码文件之外,一般都要包含其他同事写的头文件,若是与他方合作,还要包含第三方头文件。环境配置部分,一般是配置一些模板、库文件目录,具体还要根据所用的实际框架来配置,包含一些服务器的地址,端口之类也都在配置文件中。

本节书摘来自异步社区《操作系统真象还原》一书中的第0章,第0.13节,作者:郑钢著,更多章节内容可以访问云栖社区“异步社区”公众号查看

0.13 什么是工程,什么是协议

这两个小问题,一些非开发型技术人员经常会问到,做过开发的同学肯定了解。想想还是简单说一下吧(因为这名词似乎也没法说复杂)。

软件中的工程是指开发一套软件所需要的全部文件,包括配置环境。

在一般的集成开发环境中如eclipse或vc++,在程序的开始都是先建立一个project,这就是所谓的工程,它相当于一个大目录,以后写的代码都在这里面。

全部文件包含实际代码和环境配置两部分。实际代码部分,除了自己写的代码文件之外,一般都要包含其他同事写的头文件,若是与他方合作,还要包含第三方头文件。环境配置部分,一般是配置一些模板、库文件目录,具体还要根据所用的实际框架来配置,包含一些服务器的地址,端口之类也都在配置文件中。还是那句话,工程就是为了完成软件编写所涉及的全部相关文件。

协议是一种大家共同遵守的规约,主要用来实现通信、共享、协作;起初是为避免大家各干各的,无法彼此调用对方成果的情况,从而给大家统一一种接口、一组数据调用或者分析的约定。

大家达成一致后,都遵守这个约定开发自己的产品,别人只要也按照这个约定就能够享用自己的成果,从而实现了彼此兼容。只要是技术人员都对TCP/IP有所了解,这就是我们目前赖以生存的网络协议。根据OSI七层模型,它规定数据的第一层,也就是最外层物理层,这一层包含的是电路相关的数据。发送方和接收方都彼此认同最外层的就是电路传输用的数据。每一层中的前几个固定的字节必须是描述当前层的属性,根据此属性就能找到需要的数据。各层中的数据部分都是更上一层的数据,如第一层(物理层)中的数据部分是第二层(数据链路层)的属性+数据,第三层(网络层)的数据部分是第四层(传输层)TCP或UDP的属性+数据。各层都是如此,直到第七层(应用层)的数据部分才是真正应用软件所需要的数据。由此可见,对方一大串数据发过来后,经过层层剥离处理,到了最终的接收方(应用软件),只是一小点啦。

如图0-7所示,两边的应用程序互发数据时,其实发的就是最顶层的那一小点“数据”,每下一层,便加了各层的报文头,上层整个(包括自己的报文头和报文体)全部成了下一层的数据部分。

这样说似乎还是很抽象,具体地说,就是需要的数据是在偏移文件固定大小的字节处,这个固定字节是多少,就是协议中所规定的。不了解TCP/IP的同学可以参看各层报文格式,自行查阅吧。

screenshot

相关文章
|
存储 定位技术 iOS开发
XCode8升级到Xcode9(操作系统为iOS11)后原来的工程中遇到的问题
XCode8升级到Xcode9(操作系统为iOS11)后原来的工程中遇到的问题
381 23
|
关系型数据库 MySQL Apache
Service Apache can not start. Reason:(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一-次。: AH00072: make_ sock
Service Apache can not start. Reason:(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一-次。: AH00072: make_ sock
569 0
|
算法 安全 网络协议
操作系统:SSH协议知识介绍
SSH(Secure Shell)安全外壳协议,是一种建立在应用层基础上的安全协议,通过对密码进行加密传输验证,可以在不安全的网络中对网络服务提供安全的传输环境,实现SSH客户端和SSH服务器端的连接,所以SSH是基于客户端-服务端模式。
操作系统:SSH协议知识介绍
|
存储 NoSQL 前端开发
MIT 6.828 操作系统工程 2018 fall xv6 lab1 笔记 and 中文注释源代码阅读
MIT 6.828 操作系统工程 2018 fall xv6 lab1 笔记 and 中文注释源代码阅读 mit 6.828 lab 代码和笔记,以及中文注释源代码已放置在github中: https://github.com/yunwei37/xv6-labs
2052 0
|
Linux C语言
《操作系统真象还原》——导读
以上情况对我们学习操作系统来说也同样存在,比如当老师介绍中断发生时的上下文保护时,我们更多的疑问不是如何保存CPU的上下文数据,而是想知道为什么在不同的特权级下会使用不同的栈,这背后的原理是什么,并且这是如何做到的。
1797 0
|
JavaScript 前端开发 Linux
《操作系统真象还原》——2.3 让MBR先飞一会儿
虽说主引导记录mbr是咱们能够掌控的第一个程序,但这并不是让我们为之激动的理由。我们平时所写的程序都要依赖于操作系统,而我们即将实现的这个程序是独立于操作系统的,能够直接在裸机上运行,这才是让我们激动的理由,对咱们来说这无疑是历史性的一刻。
2675 0
|
存储 内存技术 程序员
《操作系统真象还原》——2.2 软件接力第一棒,BIOS
Intel 8086有20条地址线,故其可以访问1MB的内存空间,即2的20次方=1048576=1MB,地址范围若按十六进制来表示,是0x00000到0xFFFFF。不知道硬件工程师当时设计的初衷是什么,总之人家有自己的理由,这1MB的内存空间被分成多个部分。
2357 0
|
存储
《操作系统真象还原》——第2章 编写MBR主引导记录,让我们开始 掌权 2.1 计算机的启动过程
所以,都在内存中运行程序,操作系统和硬件设计都省事了,这可能也是为了方式的统一吧,否则总不能出现某种存储介质后,操作系统和硬件就要付出额外努力去支持。当然,具体原因只有硬件工程师才知道,咱们在此先打住,继续咱们的内容。
1674 0
|
运维 Linux
《操作系统真象还原》——1.5 运行bochs
我们键入的是上面长方形框框中的部分:bochsrc.disk。由于我们刚刚把此文件放到了bochs的安装路径下,bochs找到了它并加载成功。紧接着下面给出的默认选项变成了[6],也就是Begin simulation选项,开始模拟x86硬件平台。
4554 0

热门文章

最新文章

推荐镜像

更多