网络编程套接字(2)——Socket套接字

简介: 网络编程套接字(2)——Socket套接字

一、概念


       Socket套接字,是由系统提供用于网络通信的技术,是基于TCP / IP协议的网络通信的基本操作单元。

       操作系统提供给我们进行网络编程的 API 就叫做  "Socket API",网络编程套接字,这里的socket的翻译是插槽,插座的意思。

       基于Socket套接字的网络程序开发就是网络编程.。


二、分类


       要想进行网络编程,需要使用系统的API,本质上还是传输层提供的。

       传输层涉及到的协议,主要是这两个:TCP,UDP。由于这两个协议之间的差异还是挺大的,它们API的差异也比较大。

       Socket套接字主要针对传输层协议分为如下三类:


1、流套接字(使用传输层TCP协议)

               TCP,即Transmission Control Protocol(传输控制协议),传输层协议。


TCP的特点

       1、有连接

               不是物理上的连接,虚拟的连接,比如打电话,打电话者拨号,接电话者要点击接通才能进行通信,连接的特点得是双方都能认同。


       2、可靠传输

               网络上存在的 “异常情况” 是非常多的,无论使用什么软硬件技术手段,都无法100%保证,网络数据一定能从 A 传输到 B。

               这里的可靠传输,主要指的是发送的数据到没到,发送方都能清楚的感知到。

       3、面向字节流

               此处谈到的字节流和文件IO中的字节流完全一样,网络传输的基本单位是字节。

       4、全双工

               一个信道,可以双向通信,比如像斑马线上的马路,同一时间,对面的人既可以对面走过来,也可以从我这里走到对面。

       5、有接受缓冲区,也有发送缓冲区

       6、大小不限


       对于字节流来说,可以简单理解为,传输数据是基于IO流,流式数据的特征就是在IO流没有关闭的情况下,是无边界的数据,可以多次发送,也可以分开多次接收。(网络传输的基本单位是字节)


2、数据报套接字(使用传输层UDP协议)

       UDP,即User Datagram Protocol(用户数据报协议)。传输层协议。


UDP的特点

       1、无连接

               则是发微信 / 发短信,无论你是否同意,消息都能给你发送过去。

       2、不可靠传输

               发送的数据到没到,发送方不都能清楚的感知到。

       3、面向数据报

               每次传输的基本单位是一个 数据报(由一系列的字节构成的),特定的结构。

       4、全双工

               半双工就只能单向通信,比如羽毛球桶的羽毛球,同一时间,只能从一个方向取出羽毛球来。

       5、有接受缓冲区,也有发送缓冲区

       6、大小受限,一次最多传输64k

       对于数据报来说,可以简单地理解为,传输数据是一块一块的,发送一块数据假如100字节,必须一次发送,接收也必须一次接收100字节,而不能分100次,每次一个字节。


3、原始套接字

       原始套接字用于自定义传输层协议,用于读写内核没有处理的IP协议数据。我们不学习原始套接字,简单了解即可。


相关文章
|
11天前
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解
|
16天前
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解
|
6天前
|
网络协议 Python
在Python中,我们使用`socket`模块来进行网络通信。首先,我们需要导入这个模块。
在Python中,我们使用`socket`模块来进行网络通信。首先,我们需要导入这个模块。
|
15天前
|
网络协议 安全 Java
深入了解Java中的网络编程与Socket通信
深入了解Java中的网络编程与Socket通信
|
17天前
|
网络协议 Java
Java网络编程基础与Socket实现技术
Java网络编程基础与Socket实现技术
|
18天前
|
网络协议 安全 Java
Java详解:网络编程(零基础入门)
Java详解:网络编程(零基础入门)
|
19天前
|
Java API 开发者
Java网络编程基础与Socket通信实战
Java网络编程基础与Socket通信实战
|
17天前
|
Java 大数据
如何在Java中进行网络编程:Socket与NIO
如何在Java中进行网络编程:Socket与NIO
|
16天前
|
网络协议 Java 网络安全
Java中的网络编程:TCP详解
Java中的网络编程:TCP详解
|
17天前
|
Java API 网络安全
Java网络编程入门
Java网络编程入门