这段内容可以直接忽略不看

不想鸽太久了,我还一直想写一篇费曼学习法的随笔,现在看起来遥遥无期的样子。我希望连载完网络编程之后还能写并发编程,我甚至还想写点其他的,但我今天掐指一算,网络编程按一星期更新一篇的话……好像也得好几个月。天哪,几个月后的事情我真的不敢想。 (我实在是,太懒了,哎~)

作为第一篇,我还是要鼓起勇气的
  • 我希望能从另一个角度跟着大家一起学习这门手艺
  • 我希望读者能自己多动手(敲代码)
  • 我希望多提出意见和建议
  • 我所写内容只是关于这门技术的冰山一角,希望读者朋友们再接再厉,继续学习
开始之前,需要一些准备
  1. 你需要懂点c语言,皮毛毛皮都行
  2. 你最好要有一个安装Linux比较流行的发行版本的电脑(或者虚拟主机),流行是因为出问题能在网上找到答案。(一套好方案:visual studio 创建Linux项目在Linux主机上进行远程运行)
  3. 关于2,没有的话,也可以,但会损失很多一部分乐趣。但是你起码还会用windows编程吧?什么都不会?那建议劝退了哦。
  4. 开搞!

网络编程是什么?

最容易的理解,网络编程就是编写程序使两台连网的计算机相互交换数据

真的这么简单,这就是全部内容吗?

当然,就是这么简单,这就是全部内容。网络编程比想象中要简单许多。(这是第一篇,我希望大家不要怕,干就完了,奥利给)

用什么交换数据?

首先要有物理连接,但这个不用你担心,因为现在大部分计算机已经联网了。(注1:如果你曾经看过一些网络的相关书籍,肯定会说到通信介质,这基本就属于最底层的物理层了,但这儿这个不是重点)。在此基础上只需要考虑怎样交换数据呢。操作系统会提供名为套接字(socket)的部件,让我们能进行网络数据交换。

但我看了以上的内容还是有点迷啊?

我也迷啊,标题是TCP/IP,一下子有所socket,又说很简单,换做神仙也不懂啊。不用慌,我们继续探索这未知奥秘。

二营长,把我的意大利炮拿出来!(有必要引出一个模型)
从左到右:分别是OSI七层模型,TCP/IP分层模型(五层模型),三层模型。

接下来的内容觉得疑惑的话,不妨看看上面这个图。

我倒是在图里看到了TCP和IP,但我还是不懂耶,那你能给我解释一下什么叫TCP IP网络编程吗?

如上,网络编程是啥,我已经说过了。重点说下TCP和IP,从 字 面 意 义 上 讲 , 有 人 可 能 会 认 为 TCP/IP 是 指 TCP 与 IP 两 种 协 议 。 实 际 生 活 当 中 有 时 也 确 实 就 是 指 这 两 种 协 议 。 然 而 在 很 多 情 况 下 , 它 只 是 利 用 IP 进 行 通 信 时 所 必 须 用 到 的 协 议 群 的 统 称 。 具 体 来 说 , IP 或 ICMP 、 TCP 或 UDP 、 TELNET 或 FTP 、 以 及HTTP 等 都 属 于 TCP/IP 的 协 议 。 它 们 与 TCP 或 IP 的 关 系 紧 密 , 是 互 联 网 必 不 可 少 的 组 成 部 分 。 TCP/IP 一 词 泛 指 这 些 协 议 , 因 此 , 有 时 也 称 TCP/ IP 为 网 际 协 议 族 。

把两个概念整一起不就行了呗。

那socket(套接字)又是怎么回事呢?

还是套路,就是套上套呗。计算机管这叫抽象,在原有TCP 和 UDP 协议的基础上,系统通过套接字部件,整合起来,提供统一的api,方便用户进行软件开发。

何必又有socket,何必又有多此一举呢?

个人觉得,socket最大的好,就是承上启下。应用层的协议直接通过socket传输数据,同时socket又简化了传输协议的操作难度。


我要睡觉了,真的困了,关于socket是什么,我有空继续再说

2 Replies to “精分TCP/IP网络编程讲义 —— 理解网络编程和套接字(一)”

发表评论

电子邮件地址不会被公开。 必填项已用*标注