数据包和套接字有什么区别?

时间:2016-07-11 04:00:39

标签: sockets networking port packet

我刚读过"What is the difference between a port and a socket?",看来socket是创建连接的东西。然后包怎么样?连接之间是否发送了什么?所以进展是“ip - > port - > socket - >发送数据包”?

4 个答案:

答案 0 :(得分:4)

数据包是一大块数据。 所有IP网络都通过网络以小块的形式发送数据。 套接字(与TCP / IP相关)是在此基础上构建的抽象,它提供了可靠的数据流。

使用套接字时,您只需发送无限数据流,而不是处理单个数据包的发送 套接字实现处理将其拆分为数据包并通过网络发送并处理重新发送丢失的数据包。

答案 1 :(得分:2)

套接字是用于发送数据包的抽象。

答案 2 :(得分:2)

套接字是IP地址和端口号的组合。

数据包是第3层协议数据单元,或与网络层关联的一段数据。

就你提到的“进展”而言,OSI模型是描述流程的有用工具。

Ugly image I threw together

每个OSI模型层都有一个关联的数据单元。您可以在上面看到数据包是与网络层关联的一段数据。您描述的网络层使用IP地址进行通信。

第4层或传输层使用端口号进行通信。套接字是端口号和IP地址的组合。

来自发件人视角的流程沿着OSI模型发展。应用程序数据包含传输标头(源和目标端口号),然后是网络标头(源和目标IP地址),然后是数据链路标头(通常是以太网LAN上的MAC地址),最后编码为线路上的位。

来自收件人视角的流量正好相反,爬上了堆栈。在线上接收比特,然后缓慢地“解压缩”数据,移除标题。如果目标MAC与接收方匹配,则剥离这些标头,如果IP匹配,则剥离这些标头,如果找到开放端口,则删除这些标头,最后导致未在此处未示出的较高层中的解包应用级数据。

希望这有助于澄清。

答案 3 :(得分:0)

套接字绑定到您的系统以允许两个进程之间的通信。

数据包是通过套接字发送的信息片段。