以前也编写过网络通信的程序,就是实现一个客户端与一个服务器通信相互发送消息,在程序中会使用一样东西叫做socket套接子,当时知道socket是应用层到下层的接口,但一直很难直观地理解socket到底是什么东西。本文来探究一下socket和TCP/IP协议族的关系,加深理解。春恋慕
TCP/IP协议族中的数据链路层、网络层、传输层协议是在操作系统内核中实现的,因此操作系统需要实现一组系统调用,使得应用程序能够访问这些协议提供的服务。实现这组系统调用的API就是socket。
由socket定义的这一组API提供两点功能:1.将应用程序数据从用户缓冲区复制到TCP/UDP内核发送缓冲区,以交付内核来发送数据(如send函数),或者是从TCP/UDP接收缓冲区中,复制到用户缓冲区,以读取数据;2.应用程序可以通过他们来修改内核中的各层协议的某些头部信息或其他数据结构,从而精细地控制底层通信的行为,比如修改IP数据报中的TTL。
socket是一套通用网络编程接口,他不但可以访问内核中的TCP/IP协议栈,而且可以访问其他网络协议栈。