最近自己在学习套接字,感觉原始套接字这块内容比较难以理解,但这部分的内容却十分有意思,所以自己对自己的学习到的知识点进行总结。
在学习int socket(int domain, int type, int protocol)时发现在函数的第二个参数位置type类型有3种。
SOCK_STREAM 字节流套接字
SOCK_DGRAM 数据报套接字
SOCK_RAM 原始套接字
字节流套接字提供有序,可靠,双向字节流的连接。
数据报套接字是在AF_INET域中通过UDP/IP连接实现,它提供的是一种无需连接的不可靠服务。
原始套接字与前面两种套接字不同。详细原因看后面的总结。
1.套接字的域
域指定套接字通信中使用的网络介质。最常见的套接字域是AF_INET,它是指Internet网络,许多Linux局域网使用的都是该网络,当然,因特网自身用的也是它。其底层的协议——网际协议(IP)只有一个地址族,它使用一种特定的方式来指定网络中的计算机