socket协议中,Stream Socket与普通Socket有何区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1339个文字,预计阅读时间需要6分钟。
目录简介Socket 是什么Stream Socket使用 socat 创建 TCP 服务使用 ss 检查 TCP 连接使用 nc 连接 socket总结简介不论是在普通的网络编程中还是在 Netty 中,都会经常提到一个词——Socket。它就像网络通信的基石,承载着数据传输的桥梁。下面,我们将简单介绍 Socket 的概念和相关操作。
Socket 是什么Socket 是网络通信中的一种抽象概念,它代表了一个通信的端点。在 TCP/IP 协议族中,Socket 是实现网络通信的基础。
Stream SocketStream Socket 是一种全双工的、面向连接的通信方式,它允许双向的数据传输。
使用 socat 创建 TCP 服务使用 socat 可以轻松地创建一个 TCP 服务。以下是一个简单的例子:
socat TCP-LISTEN:12345,fork
这将创建一个监听 12345 端口的 TCP 服务。
使用 ss 检查 TCP 连接ss 是一个用于查看网络连接的工具,它可以替代传统的 netstat 命令。以下是一个检查 TCP 连接的例子:
ss -tunlp | grep 12345
这将列出所有连接到 12345 端口的 TCP 连接。
使用 nc 连接 socketnc(netcat)是一个强大的网络工具,可以用来连接 socket。以下是一个连接到 12345 端口的例子:
nc localhost 12345
总结Socket 是网络编程中的核心概念,它通过 Stream Socket 实现了数据的双向传输。使用 socat、ss 和 nc 等工具,我们可以方便地创建、检查和连接 socket。
目录- 简介
- Socket是什么
- Stream Socket
- 使用socat创建一个TCP服务器
- 使用ss检查TCP连接
- 使用nc连接socket
- 总结
不管是在普通的网络编程中还是在netty中,都经常会提到一个词叫做socket,好像socket是一个神奇的东西,使用socket我们可以建立客户端到服务器端的连接,并且和进行客户端和服务器端的通讯,那么socket到底是什么呢?它有哪些分类呢?一起来看看吧。
Socket是什么socket的中文翻译是套接字,个人觉的这个翻译真的是太差劲了,套接字听起来毫无意义,所以很多人在第一次听到socket这个词的时候肯定很迷茫。
那么什么是socket呢?socket是一种不同程序间进行进程通讯的方法,这些程序可以在同一个服务器上也可以在不同的服务器上。
socket建立连接的基础是IP协议,IP协议被用来进行数据的封装和分组,然后才能够在网络上进行传输。这种依赖于IP协议的socket,又叫做network socket。
通过network socket可以建立客户端和服务器端的连接,客户端和服务器端是通过socket address来发现对方的。
以java为例,我们来看下SocketAddress的定义:
public abstract class SocketAddress implements java.io.Serializable {
static final long serialVersionUID = 5215720748342549866L;
}
可以看到SocketAddress只是一个笼统的定义,它可以有多种实现,它具体的实现中包含了传输协议,比如说是TCP,还是UDP,另外还需要包含一个IP地址和一个连接的端口。
其中IP地址和端口定义了连接的对象,协议定义的是连接方式。
基于不同的协议,可以衍生出不同的类型的sockets。比如依赖于TCP协议的叫做Stream sockets,依赖于UDP协议的叫做Datagram sockets,依赖于local files来进行数据传输的叫做Unix Domain Sockets.
接下来我们会在一个unix系统中详细讲解这几种协议的使用。
在讲解详细的例子之前,我们需要使用到关于网络的命令,他们是ss,nc和socat。
在本文中,我使用的是centOS系统,所以你可以使用下面的命令进行安装:
yum install iproute2 netcat-openbsd socat
Stream Socket
什么是Stream Socket呢?从字面上可以看出,这个Socket连接是用来进行流传输的,如果要进行流的传输,那么首先就需要建立一个稳定的网络连接,在稳定的连接方面,毫无疑问TCP(Transmission Control Protocol)是最常用也是极其高效的一种协议。
对于Stream Socket来说,它是有向性的,数据package需要从一个地址通过网络传递到另外一个地址,同时还需要接受到对方的处理返回结果,在这个过程中通常使用的就是TCP协议。
TCP协议能够保证数据的稳定性和有序性,TCP的数据包可以保证发送到物理网络接口的数据包顺序。 如果网络接口接收到的数据包是无序的,那么网络适配器和操作系统将确保它们以正确的顺序重新组合以供应用程序使用。
常见的基于TCP的Stream Socket就是我们常常访问的nmap.org/ncat ) Ncat: Connected to 127.0.0.1:8888. Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
可以看到nc已经成功建立了连接,并且发送了0 bytes的内容。
同样的,我们建立到Ipv6的连接:
nc -6 -vz ::1 8888
这里的 ::1表示的是Ipv6的本地地址。输出结果如下:
Ncat: Version 7.50 ( nmap.org/ncat )
Ncat: Connected to ::1:8888.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
总结
到此,我们介绍了Socket的基本分类Stream Socket的含义,并且使用unix中的工具搭建了socket服务器和客户端,当然这只是最简单的说明描述,大家用来体会Stream Socket的流程即可。
本文已收录于 www.flydean.com/15-stream-socket/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
本文共计1339个文字,预计阅读时间需要6分钟。
目录简介Socket 是什么Stream Socket使用 socat 创建 TCP 服务使用 ss 检查 TCP 连接使用 nc 连接 socket总结简介不论是在普通的网络编程中还是在 Netty 中,都会经常提到一个词——Socket。它就像网络通信的基石,承载着数据传输的桥梁。下面,我们将简单介绍 Socket 的概念和相关操作。
Socket 是什么Socket 是网络通信中的一种抽象概念,它代表了一个通信的端点。在 TCP/IP 协议族中,Socket 是实现网络通信的基础。
Stream SocketStream Socket 是一种全双工的、面向连接的通信方式,它允许双向的数据传输。
使用 socat 创建 TCP 服务使用 socat 可以轻松地创建一个 TCP 服务。以下是一个简单的例子:
socat TCP-LISTEN:12345,fork
这将创建一个监听 12345 端口的 TCP 服务。
使用 ss 检查 TCP 连接ss 是一个用于查看网络连接的工具,它可以替代传统的 netstat 命令。以下是一个检查 TCP 连接的例子:
ss -tunlp | grep 12345
这将列出所有连接到 12345 端口的 TCP 连接。
使用 nc 连接 socketnc(netcat)是一个强大的网络工具,可以用来连接 socket。以下是一个连接到 12345 端口的例子:
nc localhost 12345
总结Socket 是网络编程中的核心概念,它通过 Stream Socket 实现了数据的双向传输。使用 socat、ss 和 nc 等工具,我们可以方便地创建、检查和连接 socket。
目录- 简介
- Socket是什么
- Stream Socket
- 使用socat创建一个TCP服务器
- 使用ss检查TCP连接
- 使用nc连接socket
- 总结
不管是在普通的网络编程中还是在netty中,都经常会提到一个词叫做socket,好像socket是一个神奇的东西,使用socket我们可以建立客户端到服务器端的连接,并且和进行客户端和服务器端的通讯,那么socket到底是什么呢?它有哪些分类呢?一起来看看吧。
Socket是什么socket的中文翻译是套接字,个人觉的这个翻译真的是太差劲了,套接字听起来毫无意义,所以很多人在第一次听到socket这个词的时候肯定很迷茫。
那么什么是socket呢?socket是一种不同程序间进行进程通讯的方法,这些程序可以在同一个服务器上也可以在不同的服务器上。
socket建立连接的基础是IP协议,IP协议被用来进行数据的封装和分组,然后才能够在网络上进行传输。这种依赖于IP协议的socket,又叫做network socket。
通过network socket可以建立客户端和服务器端的连接,客户端和服务器端是通过socket address来发现对方的。
以java为例,我们来看下SocketAddress的定义:
public abstract class SocketAddress implements java.io.Serializable {
static final long serialVersionUID = 5215720748342549866L;
}
可以看到SocketAddress只是一个笼统的定义,它可以有多种实现,它具体的实现中包含了传输协议,比如说是TCP,还是UDP,另外还需要包含一个IP地址和一个连接的端口。
其中IP地址和端口定义了连接的对象,协议定义的是连接方式。
基于不同的协议,可以衍生出不同的类型的sockets。比如依赖于TCP协议的叫做Stream sockets,依赖于UDP协议的叫做Datagram sockets,依赖于local files来进行数据传输的叫做Unix Domain Sockets.
接下来我们会在一个unix系统中详细讲解这几种协议的使用。
在讲解详细的例子之前,我们需要使用到关于网络的命令,他们是ss,nc和socat。
在本文中,我使用的是centOS系统,所以你可以使用下面的命令进行安装:
yum install iproute2 netcat-openbsd socat
Stream Socket
什么是Stream Socket呢?从字面上可以看出,这个Socket连接是用来进行流传输的,如果要进行流的传输,那么首先就需要建立一个稳定的网络连接,在稳定的连接方面,毫无疑问TCP(Transmission Control Protocol)是最常用也是极其高效的一种协议。
对于Stream Socket来说,它是有向性的,数据package需要从一个地址通过网络传递到另外一个地址,同时还需要接受到对方的处理返回结果,在这个过程中通常使用的就是TCP协议。
TCP协议能够保证数据的稳定性和有序性,TCP的数据包可以保证发送到物理网络接口的数据包顺序。 如果网络接口接收到的数据包是无序的,那么网络适配器和操作系统将确保它们以正确的顺序重新组合以供应用程序使用。
常见的基于TCP的Stream Socket就是我们常常访问的nmap.org/ncat ) Ncat: Connected to 127.0.0.1:8888. Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
可以看到nc已经成功建立了连接,并且发送了0 bytes的内容。
同样的,我们建立到Ipv6的连接:
nc -6 -vz ::1 8888
这里的 ::1表示的是Ipv6的本地地址。输出结果如下:
Ncat: Version 7.50 ( nmap.org/ncat )
Ncat: Connected to ::1:8888.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
总结
到此,我们介绍了Socket的基本分类Stream Socket的含义,并且使用unix中的工具搭建了socket服务器和客户端,当然这只是最简单的说明描述,大家用来体会Stream Socket的流程即可。
本文已收录于 www.flydean.com/15-stream-socket/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

