UDP类型的服务器和客户端,只能是客户端最先发送数据?

UDP类型的服务器和客户端,只能是客户端最先发送数据?,第1张

UDP没有 客户端 和服务器的区分,随便那个先发都可以。
不同的机器发过来也行。只要发到相应的ip 和端口就行了。
因为UDP和TCP不同,UDP是不需要首先建立连接的。

用户: 需求发起者。

数据传输过程图:

应用程序: 发起数据的传输交流过程。

过程:

过程:

过程:

过程:

过程:

过程:

过程:

注: OSI参考模型总结 - 小白的博客 - CSDN博客

访问服务器的过程可以通过 windows+R 快捷命令 --> 进入运行界面--->然后通过cmd 命令 --->进入控制台--->然后输入命令 tracert + 访问的域名网址-->查看访问过程。

ping命令来测试网络连接:

物理层常见故障:

硬件连接问题:1接触不良2硬件未连通

数据链路层故障:

1MAC地址冲突不能上网;

2交换机与计算机网卡的带宽协商不一致,网速不一致导致网络不通;

3ADSL欠费导致网络不通;

4将计算机错误的连接到VLAN(Virtual Local Area Network)。

注:

网络层故障:

1计算机IP地址设置错误。

2计算机没有设置网关。

3计算机子网掩码配置错误。

4沿途路由器路由表错误。

传输层故障:

表示层故障:

乱码问题(字符集对应错误)

应用层故障:

应用层程序配置问题(浏览器服务器的配置问题导致上网故障等)

物理层安全:

防止非法计算机接入公司网络(包括无线AP)

数据链路层安全:

1设置WiFi密码,属于网络链路层添加秘钥的方法。

2公司内部的交换机可以设置哪个Mac地址可以接入,设置接多少台计算机。

3家里的ASDL拨号上网的需要登入账号密码。

4划分不同的VLAN(Virtual Local Area Network)

网络层安全:

1在路由器上设置ACL控制数据包转发,控制网络。

2在计算机上设置网络安全,设置访问权限。

应用层安全:

发现软件漏洞,增补丁。

TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。套接字可以实现将多个客户连接到一个服务器。

它是网络通信中端点的抽象表示,包含进行网络通信必需的五种信息:1连接使用的协议,2本地主机的IP地址,3本地进程的协议端口,4远地主机的IP地址,5远地进程的协议端口。

1域: 套接字通信中使用的网络介质,常见的有AF_INET(因特网络)

2类型:

a 流式套接字(sock_stream): 用于提供面向连接、有序的、可靠的双向jie节流的链接式数据传输服务,由类型sock_stream指定,他是在AF_INET域中通过TCP/IP链接实现的。

b 数据报套接字(sock_dgram): 提供了一种无连接的服务,是AF_INET域中通过UDP/IP链接实现的。

c 原始套接字(sock_raw): 允许对较低层次的协议直接访问,比如IP、ICMP协议,他常用于检验新的协议的实现或者访问现有服务中配置的新设备。网络监听技术很大程度上依赖于socket_raw

3协议: 套接字协议一般采用默认值。即默认参数为0。

1套接字是用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

2当前应用进程需要使用网络进行通信时,就会发出系统调用,请求 *** 作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程。

3 *** 作系统为这些资源的总和,用一个叫做套接字描述符的号码表示,并把此号码返回给应用进程,应用进程所进行的网络 *** 作都必须使用这个号码。

4通信完毕后,应用进程通过一个关闭套接字的系统调用通知 *** 作系统回收与该“号码”相关的所有资源。

1连接创建阶段

a套接字被创建后,其端口号和IP地址都是空的,应用进程调用bind(绑定)来指明套接字的本地地址(在服务器端调用bind时就是把熟知端口号和本地IP填写到已创建的套接字中)

b服务器调用bind后 ,还必须调用listen(收听)把套接字设置为被动方式,以便随时接收客户的服务请求。(UDP服务器由于只提供了无限连接服务,不使用listen系统调用)

c客户进程发送连接请求后,服务器紧接着调用accept(接受),以把客户进程发来的连接请求提取出来。(系统调用accept的一个变量就是要指明哪一个套接字发起的连接。)

2数据传输阶段

客户和服务器都在TCP连接上使用send系统调用传送数据,使用recv系统调用接收数据。

3连接释放阶段

一旦客户或者服务器结束使用套接字,就把套接字撤销,此时调用close释放连接和撤销套接字。应用层总结-系统调用和应用编程接口 - 十分残念的博客 - CSDN博客

其过程示意图如下:

网络编程的目的:

直接或间接地通过网络协议与其他计算机进行通讯。

网络编程的问题:

1如何准确的定位网络上一台或多态主机。

2找到主机后,如何快速高效的传输数据。

网络编程的对象:

传输层提供的面向应用的可靠或非可靠的数据传输机制。

网络编程流行模型:

1CS模型(客户端/服务器模型)

2BS模型(浏览器/服务器模型)

参考网络编程--Socket(套接字) - A-祥子 - 博客园

注: 扩展链接内关于TCP/IP的相关知识讲解也相当详细,可以参考浏览一下。

1、\x0d\IP数据包包含 tcp数据包 udp数据包,IP是第三层(网络层)的协议,TCP与UDP都属于第四层(传输层)的协议。\x0d\\x0d\TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。\x0d\UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快\x0d\2、关键点区分:\x0d\ A。基于连接与无连接 \x0d\ B。对系统资源的要求(TCP较多,UDP少) \x0d\ C。UDP程序结构较简单 \x0d\ D。流模式与数据报模式 \x0d\ E。TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证\x0d\3、\x0d\TCP发送的包有序号,对方收到包后要给一个反馈,如果超过一定时间还没收到反馈就自动执行超时重发,因此TCP最大的优点是可靠。一般网页(>

实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。

RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合RTCP协议或者RTSP协议)。因为RTP自身具有Time stamp所以在ffmpeg 中被用做一种formate

RTP协议格式:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X|  CC   |M|     PT      |       sequence number         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           timestamp                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           synchronization source (SSRC) identifier            |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|            contributing source (CSRC) identifiers             |
|                                                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
上图引自rfc3550,由上图中可知道RTP报文由两个部分构成--RTP报头和RTP的负载:

RTP报文由两部分组成:报头和有效载荷。RTP报头格式如图67所示,其中:

1V:RTP协议的版本号,占2位,当前协议版本号为2。

2 P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。

3 X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。

4  CC:CSRC计数器,占4位,指示CSRC 标识符的个数。

5 M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。

6 PT: 有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等,在流媒体中大部分是用来区分音频流和视频流的,这样便于客户端进行解析。

7 序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。这个字段当下层的承载协议用UDP的时候,网络状况不好的时候可以用来检查丢包。同时出现网络抖动的情况可以用来对数据进行重新排序,在helix服务器中这个字段是从0开始的,同时音频包和视频包的sequence是分别记数的。

8 时戳(Timestamp):占32位,时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。

9 同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。

10 特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。

如果扩展标志被置位则说明紧跟在报头后面是一个头扩展,其格式如下:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      defined by profile       |           length              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        header extension                       |
|                                                          |

RTP协议的用途:

概述中已经基本阐述了RTP协议的用途了,其主要用于在互联网上传递音频和视频的标准数据包。在当前三网融合中RTP可以用来承载TS流,进行电视媒体数据的传播。RTP可以用来传送像TS流这种自身已经具有formate的媒体流,同时也可以用来承载AVC,AAC等去除了fromate的媒体流,这时rtp协议可被看做为一种formate,这种形式最少常见于helix 流媒体服务器的rtp流。其控制流由RTSP协议来提供。

RTP协议的使用:

RTP的使用实例之一如上图:

上面是某省IPTV20早期的一个数据包的情况。从包中可以看出RTP是怎么和RTSP配合一起使用的。从包402到411为RTSP的协商过程,RTSP在PLAYer命令后数据包就到来。紧跟其后412包就是一个mpeg 的PES包,它是有由rtp来承载的TS来形成。从在420包中就可以更加清析的看出这个RTP流的情况。其PT即payload type为mpeg2 transport streams 也就是ts流,其SSRC为:0x65737D6c,其Seq号为15764,从中也可以看出对于一个RTP流其SEQ号可以开始于一个随机的数值,但是肯定是逐包递增的。下图为420包的展开图:

从中可以看出承载RTP的为UDP的数据流这个包中有x标志位为1则说明其有 header extensions其header extensions为最下面。extension 的 profile为23128,长度为:2内容如上图最后两部分。

相同点:

1、OSI网络层

它们都根据OSI参考模型生活在同一层。我们称这层为传输层。在套接字之间的这一层中,传

输数据。他们在这方面没有区别。

2、安全

从安全角度来看,TCP和UDP都是相同的。实际上,TCP由于其会话管理而具有一些小优势,

但从总体上看,如果实现SSL,加密等安全机制,则存在安全性。除UDP之外,实现类似TCP

的协议的SSL / TLS非常容易。另一方面,像RTP这样的语音通信协议可以升级到SRTP,使底

层UDP更安全。

不同点:

1、数据包结构

UDP具有精简包结构。UDP在其标题部分中仅提供源,目标端口,长度,校验和。TCP在包中

有更多字段,因为TCP传输有更多的步骤和控件来进行包传递。TCP有12个头字段。

2、复杂程度

TCP绝对比UDP协议更复杂。正如我们在上侧看到的,TCP具有很多传输相关机制的区域。例

如,TCP提供了设置传输缓冲区相关内存的窗口机制。UDP只有校验和机制和数据包计数器,

有时候没有实现。

3、算法

要使用TCP传输数据,必须使用名为3次握手的方法创建会话。第一个客户端发送一个包含SYN

标志的数据包,服务器用ACK标志响应,最后一步客户端发送SYNC + ACK以完成与相关服务

器的TCP会话。UDP没有任何特殊算法。UDP包直接发送到服务器的端口。管理层通常在上层

应用程序层中执行。

4、速度

TCP协议的复杂性使TCP比UDP慢。至少要发送一个字节,需要进行会话初始化,并在数据传

输后关闭会话。这使TCP变慢。关于TCP的速度已经做了一些工作,但架构是有限的新增强功

能。如果您通过光纤传输UDP,则UDP 速度很快UDP速度很快,因为没有会话或会话终止的

算法。

5、可靠性

TCP是一种可靠的协议,因为它运行机制来防止数据丢失或更改。TCP使用会话来提高数据传

输的可靠性。同样在数据传输中,在两侧之间检查传输的数据,并且如果发生一些丢失或改

变,则再次重新传输数据。UDP也不可靠。真的不是。但是,如果您希望它是可靠的上层应用

程序级别机制可以实现,但这些将使传输更复杂。

6、协议

在这部分中,列出使用UDP或TCP或两者的协议。

UDP以下协议使用UDP传输。

DHCP

DNS

RDP

TFTP

SNMP

VOIP

TCP以下协议使用TCP传输。

>

>

FTP

SMTP

TELNET


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10570676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存