`
xpp02
  • 浏览: 1006634 次
社区版块
存档分类
最新评论

套接字 资料查阅

 
阅读更多

(3)套接字(socket)
一个完整的网络应用程序包括客户端和服务器两个部分。网间通信进程需要由两个进程组成,并且只能用同一种协议。也就是说,不能在通信的一端使用TCP协议,而另一端则用UDP协议。一个完整的网络通信需要一个五元组来标识:协议、本地地址、本地端口号、远端地址、远端端口号。
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与Tcp,Udp协议交互提供了称为套接字(socket)的接口。套接字是一个通信终结点,它是Sockets应用程序用来在网络上发送或接收数据包的对象。套接字具有类型,与正在运行的进程相关联,并且可以有名称。使用套接字的应用程序间通信模型如图所示。

在网络上,一个套接字由一个IP地址和一个端口号唯一确定。套接字的地址指该套接字所在计算机的网络地址,可以为域名或IP地址的形式。同一计算机上可以运行多个网络应用程序,每个应用程序都有自己的套接字用以进行网络通信,此时如果只有地址标识套接字,则当一个通信包到达计算机时,将无法确定究竟是哪个应用程序的套接字需要接收此信息。由此增加了端口的概念,以协助区分同一计算机上不同应用程序的套接字。端口用于标识进程,同一计算机上不同的网络应用程序各有不同的端口,这样,通过“网络地址+端口号”的标识方法,便唯一标识了计算机上的应用程序了I,刀。某些端口是专门为公共服务保留的,如FtP:21,httP:80,除非程序是要提供这些服务,否则应避免使用这些端口。一般来说,端口1024以前的端口号都是系统保留的或是作为公共服务的,应尽量选择大于1024的端口号,以避免冲突。套接字一般分为三种类型:
①流式套接字(SOCK--STREAM):该类套接字提供了面向连接的、可靠的、数据无错并且无重复的数据发送服务。而且发送的数据是按顺序接收的。所有利用该套接字进行传递的数据均被视为连续的字节流的并且无长度限制。这对数据的稳定性、正确性和发送/接受顺序要求严格的应用十分适用,TCP使用该类接口。
②数据报式套接字(SOCK--DGRAM):数据报式套接字提供了面向无连接的服务,不提供正确性检查,也不保证各数据包的发送顺序,因此,可能出现数据的重发、丢失等现象,并且接收顺序由具体路由决定。然而,与流式套接字相比,使用数据报式套接字对网络线路占用率较低。在TCP月P协议组中,UDP使用该类套接字。
③原始套接字(SOCK--R戌w):该套接字一般不会出现在高级网络接口的现中,因为它是直接针对协议的较低层(如IP、TcP、UDP等)直接访问的。用于检验新的协议实现或访问现有服务中配置的新设备,使用原始套接字存在络应用程序的兼容性问题,所以一般不推荐使用原始套接字。
综合以上所述,由于本系统网络通信传输视频数据,在传输层选用UDP协即选定套接字类型为数据报式套接字,数据报套接字通信流程如下图所示

分享到:
评论

相关推荐

    C# Winform Socket 字符串发送 套接字编程 精简程序核心技术

    我查阅网上的socket技术代码,大部分写的功能都很多,这样不利于初学者学习核心代码,所以我做了个最简单的,字符串发送程序,希望对爱好者有所帮助!

    2022年山东科技大学Linux实验7:套接字编程【源码、实验报告】

    系统分为服务器和客户端,服务器端维护若干文本文件信息,客户端输入要检索的关键字,服务器即将全文内容满足关键字模糊查询的文档传递给客户端(文件完整传输,不是只传输文件名),供客户端查阅。要求: 1.服务器...

    simplesockets:简单的python套接字

    该库允许使用Python套接字轻松创建TCP服务器和客户端 如果需要安全连接,请使用安全的变种securesockets 。 它使用库。 应该清楚的是,您需要安装所述库才能使用安全变体。 如果您遇到错误或有想法,请在上分享。 要...

    计算机网络实验之Ping程序设计实现分析.doc

    " "初始化套接字(WSAStartup) " "创建套接字(socket或WSASocket) " "向服务器通信(sendto/recvfrom) " "关闭套接字(closesocket) " "结束使用套接字(WSACleanup) " " " " " "三种WinSock地址结构 " "用的Winsock...

    Q版聊天软件

     了解系统调用和应用编程接口基本知识,理解应用程序和操作系统之间传递控制权的机制,掌握套接字的创建和运用,通过socket系统调用实现跨网通信。  3.提高网络编程和应用的能力  提高实际编程能力和灵活运用所...

    基于C#的UDP协议的同步实现

    完成上述步骤后,那么创建的套接字就能够在IPEndPoint上接收流入的UDP数据包,或者将流出的UDP数据包发送到网络中其他任意设备。使用UDP进行通信时,不需要连接。因为异地的主机之间没有建立连接,所以UDP不能使用...

    计算机网络大作业1

    第一,Socket套接字 第二,我们设计的客户端、服务端之间建立连接的互动过程,是模仿TCP传输过程 第一:由于课题难度较大,我们花费了大量时间去查阅资料,因此

    DownUp2U v1.16 Build 0704

    内置文件下载和站点下载双重功能,不仅可以下载多种协议(http/https/ftp/mms/rtsp)之文件,也可以下载网站所有你感兴趣的文件(比如,下载一个网站上所有1M-2M的flash文件或是整个网站),使用多套接字,多线程断点...

    基于C#的UDP协议的同步通信实现代码

    一、摘要 总结基于C#的UDP协议的同步通信。...完成上述步骤后,那么创建的套接字就能够在IPEndPoint上接收流入的UDP数据包,或者将流出的UDP数据包发送到网络中其他任意设备。使用UDP进行通信时,不

    pd-zmq:ØMQ消息队列API实现puredata

    它可以做什么: 创建PUSH / PULL,REQ / REPL和PUB / SUB套接字将客户端连接/绑定到套接字发送和接收类似于dend / netreceive的pd FUDI消息进行一些错误检查以防止最严重的踩脚计划什么:请参阅TODO文件发现一个...

    Java聊天室的设计与实现设计开题报告.doc

    也就是说网络上 " " "两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接" " "字,套接字是在比较低的层次上通信的。具体的说:一个服务器应用程序一般侦听" " "一个特定的端口等待客户端的...

    保密通讯支持库2.0#0版(静态版)

    为了完全理解该支持库,建议使用者查阅有关“安全套接字层(SSL)”的原理,本支持库就是对该原理的实现。易语言ESSLayer_static.lib支持库为易语言静态支持库,需要易语言系统5.0版本的支持,需要易语言系统核心支持...

    保密通讯支持库2.0#0版

    为了完全理解该支持库,建议使用者查阅有关“安全套接字层(SSL)”的原理,本支持库就是对该原理的实现。易语言ESSLayer.fne支持库为一般支持库,需要易语言系统3.7版本的支持,需要易语言系统核心支持库3.7版本的...

    WinPcap捕获数据包源码

    我们现在用的windows xp都应该升级到了sp3了,至少也是sp2的,但是sp2相对于sp1做出一个修改,对原始套接字权限进行了限定,我们不能用它来做自己的包。而且在windows 里面不能用它截获所有流过你网卡的数据包,...

    【Python3 网络编程】ConnectionRefusedError: [Errno 111] Connection refused

    在网络通信中,经常出现Connection Refused报错提示,不仅仅是socket编程,也有xshell连接时出现这种...我觉得在Client请求连接的过程中被Refused是因为HA尚未抓到包并Recognized,导致HA的跳变真实套接字并没有被bind

    tiws.extended:钛合金模块,可适应iamyellow TiWS本地模块,并通过更多有趣的事情扩展其功能

    tiws-connector 描述 TiWS Connector是一个简单的模块,扩展了iamyellow TiWS本机模块( )的功能。... 您可以使用它向服务器发送任何消息,消息参数接受可以通过Web套接字连接发送的任何类型的数据。 socketHa

    SharedData:使用内存映射文件在 MATLAB 实例之间共享任意数据-matlab开发

    内存映射文件提供了一种无需套接字或数据编组即可共享数据的简单方法。 % MATLAB 实例 - 编写器数据 = [1 2 3]; output = SharedData('vec3', class(data), size(data)); output.data = 数据; % MATLAB 实例 - ...

    保密通讯支持库2.0版(ESSLayer.fne)-易语言

    本支持库实现在网络上保密通讯的目的。由于一些机密数据在网上传输过程中可能...为了完全理解该支持库,建议使用者查阅有关“安全套接字层(SSL)”的原理,本支持库就是对该原理的实现。 操作系统支持: Windows、Linux

    SharedTransform:在MATLAB实例之间共享4x4均匀变换-matlab开发

    与使用套接字或使用机器人工具箱的 ROS 消息相比,内存映射文件提供了一种更简单的数据共享方式。 % MATLAB 实例(编写器) blob = SharedTransform('blob'); blob.setTransform(eye(4)); % MATLAB 实例(读者) ...

Global site tag (gtag.js) - Google Analytics