【总结】【Unix网络编程】前言及基础知识

原创 2015年11月18日 20:51:51

前言

刚刚买到《Unix网络编程》的时候,舍友们都被它的厚度吓到了,都说读这种又厚又专业的书简直煎熬,何况咱们还不是计算机专业的!但俗话说得好——大力粗奇迹嘛(脑补语气),干脆大力的去读肯定有收获!于是两个星期过去了进度过三成了。这本书好,真好,虽然厚但是易读易懂就是好。秉着做笔记的态度写日记的文笔,我将逐步将看过的内容进行分析总结,也希望这一系列文章能够解除一些读者对网络对编程的恐惧,更加自信的投入到代码事业中。下面是几点说明

  • 本人仅是一名普通院校的非计算机的大三学生,4个月前才系统学习linux及网络知识,因此本文是以学习者的角度对《Unix网络编程》的总结,纰漏及不严谨之处敬请谅解与指正;我也会在后面的文章中对前面的错误进行说明和纠正
  • 网络编程设计的内容很多,C语言,linux操作和开发,计算机网络,操作系统等知识。因此我在遇到这类问题时会用尽量简洁(甚至不太准确)的语言去描述它,至于其中的细节内容只能依靠各位自行查找相关资料了

前戏结束,燥起来!


Unix,Linux,Ubuntu之间的关系

关于Linux和Unix的关系及Linux的使用方法可以参考《鸟哥的Linux私房菜基础篇》,作者在国庆7天啃下了本书的60%,受益匪浅!
总的来说Unix是一种古老的性能优越的操作系统,Linux可以说是Unix的一种衍生物(类Unix系统),它几乎和Unix完全兼容(均遵循POSIX协议)且性能优越,完全开源(免费),因此常被用作服务器的操作系统。但我们所说的Linux实际上是一种内核,而光有个内核只能让计算机开着啥都不能干,因此需要安装许多应用程序上去来实现与用户的交互。但是用于交互的应用太多啦,我一介草民岂会装之?这时候就有许多组织基于用户需求将基本的应用程序预先装进去并作为完整的系统(发行版)发布出去。这样你只要装了这个系统就能够直接使用了。常见的发行版有Ubuntu(适合个人用户),CentOS(适合服务器)等。
补充一点,出于方便考虑,作者将我的Linux(即发行版)装在虚拟机上。虚拟机就相当于在你的电脑上又装了个电脑,你可以将你的操作系统装进去并且在这个“脑中脑”中进行操作。

作者使用的环境为装载在VMWare虚拟机上的Ubuntu14.04LTS,大家可以到Ubuntu的官网进行下载。发行版的差异不影响编程

网络基本层次及其意义

根据TCP/IP网络五层模型,网络可分为:

-应用层:应用的范围很广,有高级的如客户端,APP;也有基础的如Http,FTP等,基本可以认为是与与用户进行交互的一层。

-传输层:我从应用层获取的信息总得传给其它主机呀,但数据多且杂,就好像马路上车来车往,要是没有交通法规岂能运作?传输层提供的协议(Protocol)就起到“交通法规”的作用,它提供了数据的传输一系列规范与规则。主要的协议有TCP,UDP。

-网络层:网络层同样是提供协议的来规范数据传输的,它与传输层,应用层的关系可以有如下比喻:小明家粑粑麻麻(代表同一主机的不同进程)和小红家粑粑麻麻爱互相写信,有一天小明家粑粑麻麻都写了信给小红家,小明便拿着两封信写好地址贴好邮票走到邮局然后扔给邮局;邮局接到信后将信寄到小红家附近的邮局,小红去邮局取信之后将信带回家分给粑粑麻麻。其中,两家粑粑麻麻代表应用层,他们提供要传输的信息(写信)并处理收到的信息(读信);小明和小红代表传输层,他们遵循某种规则对家里(本地主机)的信进行处理以便能够让邮局送去或是从邮局取出来分发给父母;邮局代表网络层,他会根据小明(传输层)送来的邮件的内容遵循某种规则将它送到指定的地方并且让小红接收到。主要的网络层协议是IP

-链路层:就上面比喻而言,链路层像是从小明家通往小红家的公路,他为邮递员(网络层)的传递提供基础

-物理层:就上面比喻而言,物理层像是公路下面饱含深情的祖国大地(?),为铺路(链路层)提供基础。

总而言之,下层是下层的基础;当我要向A主机的某个进程传信息时,我的信息在五层模型中是至顶向下传输的,而我发出的信息是自底向上最终传递给A主机中的该进程的。

链路层和物理层不在Unix网络编程讨论范围内。

关于C语言

本书对网络编程对C语言的要求至少要达到入门级,即熟悉各类数据类型和控制语句,熟悉指针操作;不过现在C语言书籍众多,网上教程也层出不穷,各位可以自行学习;同时,学习网络编程也能够打打加强对C语言的理解。

一点牢骚

╮(╯▽╰)╭第一次写博客,写了好长时间,以后要加快进度了,基于代码说话是最方便的。而且说了那么就各位,明明就只有我自己会看嘛(。・`ω´・)

END

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux高级网络编程系列教程

一、网络应用层编程 1、Linux网络编程01——网络协议入门 2、Linux网络编程02——无连接和面向连接的区别 3、Linux网络编程03——字节序和地址转换 4、Linux网络编程04——套...

学习Linux网络编程(转载,很不错的入门文章)

出处未知 这篇教程是用来介绍在Linux下编写网络程序的.-----------------------------------------------------------...
  • bat603
  • bat603
  • 2006年08月25日 09:06
  • 4139

802.11协议之学习总结

802.11协议

Linux网络编程——广播

概述 在生活中广播无处不在,像平时在大街上卖物品的商人,在进行推广产品的时候往往都是使用一个喇叭来进行吆喝:“十块钱买不了吃亏,十块钱买不了上当,走过路过千万不要错过”,这就是广播。 ...

unix网络编程1 基础知识

Introduction 通过学习unix网络编程,在不使用任何库只使用api的情况下实现一个内置lua解释器的web服务器,实现简单的业务逻辑,比如通过cgi模式在web浏览器中显示图片,播放视频,...

黑马程序员——基础知识总结_网络编程

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——– 第一话:网络概述 OSI与TCP/IP参考模型:网络通信要素:1.IP地址...

黑马程序员 Java基础知识总结-网络编程

2、网络通讯要素 (1)IP地址(InetAddress已经封装成了对象) 1、网络中设备的标识 2、不易记忆,可用主机名 3、本地IP地址:127.0.0.1 主机名:Localhost。 ...

java网络编程基础知识

  • 2011年03月02日 22:37
  • 221KB
  • 下载

网络编程基础知识ppt

  • 2011年04月14日 13:11
  • 1.92MB
  • 下载

java基础知识---网络编程、反射技术、正则表达式

网络编程: 端口: 物理端口: 逻辑端口:用于标识进程的逻辑地址,不同进程的标识;有效端口:0~65535,其中0~1024系统使用或保留端口。   java 中ip对象:InetAddre...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【总结】【Unix网络编程】前言及基础知识
举报原因:
原因补充:

(最多只允许输入30个字)