了解套接字基础知识

Eug*_*gie 17 sockets network-programming

我一直在阅读基本的网络编程,但我很难找到关于究竟和套接字是什么的直接解释,以及它与OSI或TCP/IP堆栈的关系.

  1. 有人可以向我解释插座是什么吗?它是程序员或API定义的数据结构,还是网卡上的硬件设备?

  2. 所提到的网络模型的哪些层面处理"原始"套接字?传输层?网络层?

  3. 就他们在它们之间传递的数据而言,是基于套接字文本还是二进制文件?

  4. 是否有基于套接字的网络编程的替代方案?或者所有联网应用程序都使用某种形式的套接字?

如果我能得到这么多,我应该非常清楚地理解我正在读的其他一切.谢谢你的帮助!

Kim*_*ais 7

简短的答案:

  1. Socket是IP连接端点的抽象 - 因此,如果您将其视为API结构,那么您就不是很遥远.请阅读http://en.wikipedia.org/wiki/Internet_socket
  2. 互联网层即IP协议.在实践中,您通常使用绑定到某个传输层参数(数据报/ UDP或流/ TCP)的显式套接字
  3. 套接字以网络字节顺序发送数据 - 无论是文本还是二进制,取决于上层协议.
  4. 从理论上讲,可能是 - 但实际上所有的IP流量都是使用"套接字"完成的