在有了前一章的基础知识后,我想我们该进入下一步的学习了。
一、socket的说明
socket是使用 Unix 文件描述符 (fiel descriptor) 和其他程序通讯的方式。 Unix 程序在执行任何形式的 I/O 的时候, 程序是在读或者写一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数。 但是(注意后面的话),这个文件可能是一个网络连接,FIFO,管道,终端,磁盘上的文件 或者什么其他的东西。Unix 中所有的东西是文件!因此,你想和 Internet 上别的程序通讯的时候,你将要通过文件描述符。如果它是个文件描述符,那么为什么不用一般的调用 read() 和 write() 来通过套接口通讯?”简单的答案是:“你可以使用一般的函数!”。详细的答案是:“你可以,但是使用 send() 和 recv() 让你更好的控制数据传输。”
二、Internet套接口的两种类型
一种是 "Stream Sockets",另外一种是 "Datagram Sockets"。我们以后谈到他们的时候也会用到 "SOCK_STREAM" 和 "SOCK_DGRAM"。
流式套接口是可靠的双向通讯的数据流。如果你向套接口安顺序输出“1,2”,那么他们 将安顺序“1,2”到达另一边。他们也是无错误的传递的,有自己的错误控制。
数据报也使用 IP 作路由,但是他不选择 TCP。他使用“用户数据报协议 (User Datagram Protocol)”。
三、网络理论知识
网络分层模型可以分为应用层 (Application) 表示层 (Presentation) 会话层 (Session) 传输层 (Transport) 网络层 (Network) 数据链路层 (Data Link) 物理层 (Physical) 这几个层ÿ