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

前言

刚刚买到《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

你可能感兴趣的:(Unix网络编程)