对开发者而言网络到底是怎样的存在?

2018-01-18

那传输层体现在应用程序上又是个怎么样的东西?——是Socket。网络编程是件挺头疼的事情,从一开始就是,所以弄了个Socket的概念出来方便我们程序员访问网络,这最早是出现在Unix系统上的,后来Windows也借鉴了这套方法,搞了套自己的Socket API,用起来大家都很像。总体的编程思想大概就是(以TCP客户端为例):指定目标服务器IP地址和端口,连接,获取到了Socket(通常用一个整型数来表示),以后就往这个Socket上读写东西(跟读写本地文件有些类似)来实现收发,中间还可以用一些函数查询这个Socket的状态,不用了之后就close掉这个Socket以断开TCP连接。这是比较简单的情形,事实上,为了更好地挖掘系统的潜能,提高系统的网络吞吐量,不同的系统还祭出了自己的一些所谓高级网络编程模型,如Windows的完成端口,Linux的epoll等,但对程序而言,网络访问依旧是对Socket进行操作。实际上,程序员们仍然认为Socket是比较底层的东西,需要进一步抽象,于是诞生了如HttpContext之类东西,大伙们不再需要直接操作Socket了,甚至都可以不知道Socket的存在。

来源: