若千年后的一个下午,加州大学伯克利分校研究生billJoy和他的同学John正在闲聊......
bill兄,你知道吗,tcp\/Ip协议已经被制定出来了,可是还没有人能实现。
为啥?
因为tcp为了实现可靠传输,弄了很多复杂的玩意儿,三次握手,四次挥手滑动窗口,拥塞控制....
这有啥难的?晚上你把tcp\/Ip协议打印出来,我手写一个
嘿嘿,没想到吧!我还真的把这些协议都给打印了下来你给我实现一个看看?
行,放到那里吧给我备好咖啡,明天早上来见我
第二天一早,John就来找bill Joy了
John你看,tcp\/Ip已经被我实现了加到Unix内核当中去了
牛逼啊!我昨晚躺在床上还在想这两个进程用tcp协议通信时,需要用[客户端Ip,客户端port,服务器端Ip服务器端port]这个四元组来唯一标记你是怎么处理的?
很简单,我把他抽象成一个概念了,叫socket
socket?怎么操作socket?
那肯定是打开(open)然后读写(read\/write)最后关闭(close)
这不是和对文件的操作一样吗?
是啊,Ken thompson和dennisRitchie不是说过吗?Everythingis a file,我把socket也当作文件来处理,只不过没有名称罢了
哎哟!牛逼!果然Everything is a file呀!