系统崩溃,TCP协议栈

上学那会儿,学的是谭浩强的C语言教材,书里说“访问空指针会造成系统崩溃”。我记得大学老师讲到这里的时候,我就会较真儿什么是系统崩溃,老师便告诉我,访问任意指针,系统的行为将会是未知的,访问空指针系统会直接崩溃,我再问什么是系统,如何崩溃的时候,老师说,系统就是操作系统,崩溃就是蓝屏,司机之类的,反正就是系统不能继续用了…

那是2003年左右,Windows XP系统刚刚发布不到两年,大红大紫之时啊,我记得只要回到寝室,一有上机时间就会摆弄Windows XP的各种特性,炫酷的UI真的不错…

那时我们的C语言平台是Turbo C,我用它写了一个访问空指针的程序,看看能不能让Windows XP崩溃,然而,并不能。无论我写一个访问什么指针的程序,系统都不会崩溃,只是简单的程序错误。

那个时候我还在机械工程系学习机械原理,也就不纠结计算机的事了。时间过了好多年后,我才第一次经历了自己访问空指针造成了Linux操作系统崩溃,那一次,我第一次写Linux内核模块,写的不好,所以操作系统就崩溃了…

所以,在教授或者学习C语言之前,最好先教授或者学习一些操作系统的基础原理,否则,对于指针错误这种,就很难能描述清楚。即便是普通应用程序里的指针,你想真正了解它,不也得先了解虚拟内核和MMU吗?不然,当程序由于指针出现错误时,很难获得一个根源上的解释。

我不知道现在大学的老师在讲C语言系统崩溃的时候,还会不会说操作系统崩溃了,反正,跟我差不多时间上大学的人,遇到这个问题时,很多的老师都是在照本宣科操作系统崩溃


当我们提到“栈”这个词时,我们说的是带有后入先出这种行为的一种容器。也就是说,它的内容并不是一个东西,而是多个层次化的东西层叠在一起,就像一摞盘子一样。

协议栈,指的是符合某种分层模型约束的多个协议的层叠结构,比如TCP/IP,这是一个典型的协议栈。但是注意,TCP/IP协议栈包含的是一族协议,其中有HTTP,DNS,TCP,UDP,ICMP,IP,ARP,RIP,OSPF等等,而不是某一个协议。

由于TCP名不副实的地位,人们经常会用“TCP协议栈”这个词来代替TCP这一个协议,有点喧宾夺主,这是不对的。TCP只是一个协议,并不是一个栈。如果非要硬将TCP协议栈指代TCP/IP协议栈,那就必须连带着包含IP协议。

这就好比,没有任何人可以被称作人类一样。如果要描述TCP,就说TCP好了,把“栈”字去掉。


昨天看了《恐怖游轮》,本来今天准备用代码写一下逻辑的,然而睡了一觉后就没想法了,而且还有几个BUG需要解释,等全部通了一并搞。今天继续看完《土拨鼠之日》和《Happy Death Day!》,同样精彩的无限循环电影。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值