包和套接字有什么区别?

3

我刚刚读了一篇关于“端口和套接字区别”的文章("What is the difference between a port and a socket?"),看起来套接字是用来创建连接的。那么数据包呢?是在连接之间发送的吗?所以整个过程是这样的: "ip -> 端口 -> 套接字 -> 发送数据包"?

4个回答

5

一个数据包是一块数据。所有IP网络都将数据分成小块在网络上发送。 套接字(与TCP/IP相关)是在此之上构建的抽象,它提供了可靠的数据流。

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


3

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


3

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

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

关于您提到的“进展”,OSI模型是描述流程的有用工具。

Ugly image I threw together

每个OSI模型层都有一个相关的数据单元。如上所述,数据包是与网络层相关联的数据片段。您所描述的网络层使用IP地址进行通信。
第4层或传输层使用端口号进行通信。套接字是端口号和IP地址的组合。
从发送者的角度来看,流向下走OSI模型。应用程序数据被传输头(源端口号和目标端口号)包围,然后是网络头(源IP地址和目标IP地址),然后是数据链路头(通常是以太网LAN上的MAC地址),最后编码为位。在线上。
从接收者的角度来看,流程正好相反,向上爬堆栈。位在电线上接收,然后缓慢“解压缩”,删除标题。如果目标MAC与接收器匹配,则会剥离这些标题,如果IP匹配,则会剥离这些标题,如果找到开放端口,则会删除这些标题,最终在此处未显示的更高层中得到未打包的应用程序级数据。
希望这有助于澄清。

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接