一 点睛
Linux网络编程包括:用户态网络编程和内核态网络编程。
无论在Windows平台还是Linux平台,都对套接字实现了自己的一套编程接口。Windows下的Socket实现叫Windows Socket。Linux下的实现有两套:一套是伯克利套接口,起源于Berkeley Unix,这套接口很简单,得到了广泛应用,已经成为Linux网络编程事实上的标准;另一套是传输层接口,它是System V系统上网络编程API,所以这套编程接口更多是在Unix上使用。
Socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用,以实现进程在网络中通信。
Socket编程接口其实就是用户进程(应用层)和传输层或网络层之间的编程接口。
二 网络程序架构
一种是B/S架构:浏览器查看网站上网页就是这种架构下的应用。
一种是C/S架构:例如,我们计算机上安装的QQ程序就是客户端,而在腾讯公司内部还有服务器端程序。
基于套接字的网络编程,通常使用C/S架构。一个简单的客户机和服务器之间的通信过程如下:
1 客户机向服务器提出一个请求。
2 服务器收到客户机的请求,进行分析处理。
3 服务器将处理的结果返回客户机。
三 套接字类型
Linux下有3种类型套接字
- 流套接字:SOCK_STREAM
- 数据报套接字:SOCK_DGRAM
- 原始套接字:SOCK_RAW
原始套接字与标准套接字(标准套接字包