精华内容
下载资源
问答
  • 导读: 本文介绍了一种微带-波导过渡的设计仿真方法,整个设计过程均在三维电磁仿真软件HFSS中完成,利用端口处理功能简化模型,节省时间,同时保证仿真结果的准确性。试验证明,利用该方法,可以准确快速的完成所...
  • 讨论了LFM多目标回波信号的特征,并结合AD9910器件功能,提出了采用DDS频率扫描模式产生LFM信号,同时通过DDS并行数据端口输入幅相调制信息,模拟产生多目标LFM回波。经过对仿真和实测数据的分析,验证了方法的有效...
  • IDT公司(Integrated Device Technology)今天宣布已经推出新款器件,进一步拓展多端口和FIFO产品系列,致力于支持下一代无线和网络基础设施对于宽带日益增长的需求。新型的36-Mbit同步双端口器件提供业界最大的密度...
  • 网络不安全,需要恶补端口知识  现在电脑的价格真是便宜,尤其是在北京、上海等较发达的地区,不但电脑售价便宜,而且性能还贼好。... 众所周知,计算机与外部网络是通过端口进行的数据交换的...

    网络不安全,需要恶补端口知识

      现在电脑的价格真是便宜,尤其是在北京、上海等较发达的地区,不但电脑售价便宜,而且性能还贼好。为了上网,家家户户都安装了ADSL宽带。虽然网上的花花世界让人目不暇接,但是此时您会想到有坏人已经盯上你了嘛?

     

    外面的数据就好像来存钱的人手里拿的钞票,你根本就不知道他们拿的是白纸还是zhadan!

        众所周知,计算机与外部网络是通过端口进行的数据交换的。当你访问某一站点的时候,系统会在本地开放一个端口去连接远程网站服务器的某个开放端口,只有两者端口可以互连的时候,你才能在本机看到各种各样的资讯。同理,外围网络想要访问本地电脑的时候也是如此。

        一个端口就是一个潜在的通讯通道,同时也是一个入侵通道,开放一个端口就是一台计算机在网络上打开了一扇窗户,而在刚装好的windowsXP系统会默认在本地电脑上打开许多服务端口,而心怀托测的黑客也常会利用这些端口入侵您的电脑。由此,不掌握一些端口方面的相关知识,怎能安心上网?

    ■一般常见端口,以及其分类

     

      一台电脑与网络上其他节点的相互数据传输需要使用到TCP/IP协议。


        我们可以在本地连接属性中看到它的存在,双击它则是设置IP地址以及DNS服务器的对话框。上网必须安装的协议,windowsXP默认安装。

        根据TCP/IP协议规定,端口号只有整数,一台电脑可以拥有256×256(65536)个端口,范围从0 到65535。而这些端口按照连接方式可以细分为TCP和UDP两种。如果按端口号大小还可分为以下三大类:

      1.系统保留端口(从0到1023)

        这些端口不允许你随意使用,它们紧密与一些系统服务绑定。通常这些端口的开放都表明了系统可以提供某种网络服务。例如:80对应着Web服务、21对应着FTP、25对应着SMTP、110对应着POP3等。

      2.动态端口(从1024到49151)

        这些动态端口不像系统保留端口无法随意使用。你可以将你需要的很多服务绑定在这些端口上,不过一个服务只能对应一个端口。而且还有少数的系统服务会绑定在1024到49151的端口上,例如3389端口(远程终端服务),就无法被随意使用。

      而且当你需要与别人通信时,Windows会从1024起,在本机上随机分配一个动态端口,如果1024端口正在使用,那么等到再需要端口时就会分配另外一个空闲的端口供你使用。

        3.私有端口(从49152到65535)

      从49152到65535这一段端口,通常没有捆绑系统服务,Windows可以将这些端口随意分配给你使用。

        由于本地电脑上的端口数量实在是太多,小编也在网上搜索了部分常见端口,方便您的查阅,详情请看下页。


    ■常见端口大全

     

      下边附常用端口列表,以及用途

      0  通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用一种通常的闭合端口连接它时将产生不同的结果。一种典型的扫描:使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。

      7 Echo   你能看到许多人们搜索Fraggle放大器时,发送到x.x.x.0和x.x.x.255的信息。常见的一种DoS攻击是echo循环(echo-loop),攻击者伪造从一个机器发送到另一个机器的UDP数据包,而两个机器分别以它们最快的方式回应这些数据包。另一种东西是由DoubleClick在词端口建立的TCP连接。有一种产品叫做“Resonate Global Dispatch”,它与DNS的这一端口连接以确定最近的路由。Harvest/squid cache将从3130端口发送UDP echo:“如果将cache的source_ping on选项打开,它将对原始主机的UDP echo端口回应一个HIT reply。”这将会产生许多这类数据包。

      19 chargen  这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时,会发送含有垃圾字符的数据流知道连接关闭。Hacker利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。由于服务器企图回应两个服务器之间的无限的往返数据通讯一个chargen和echo将导致服务器过载。同样fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些数据而过载。

      21 ftp  最常见的攻击者用于寻找打开“anonymous”的ftp服务器的方法。这些服务器带有可读写的目录。Hackers或Crackers 利用这些服务器作为传送warez (私有程序) 和pron的节点。

        22 ssh  PcAnywhere建立TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点。如果配置成特定的模式,许多使用RSAREF库的版本有不少漏洞。(建议在其它端口运行ssh)。还应该注意的是ssh工具包带有一个称为make-ssh-known-hosts的程序。它会扫描整个域的ssh主机。你有时会被使用这一程序的人无意中扫描到。UDP(而不是TCP)与另一端的5632端口相连意味着存在搜索pcAnywhere的扫描。5632(十六进制的0x1600)位交换后是0x0016(使进制的22)。

      23 Telnet 入侵者在搜索远程登陆UNIX的服务。大多数情况下入侵者扫描这一端口是为了找到机器运行的操作系统。此外使用其它技术,入侵者会找到密码。

      25 smtp 攻击者寻找SMTP服务器是为了传递他们的spam。入侵者的帐户总被关闭,他们需要拨号连接到高带宽的e-mail服务器上,将简单的信息传递到不同的地址。SMTP服务器(尤其是sendmail)是进入系统的最常用方法之一,因为它们必须完整的暴露于Internet。

      53 DNS Hacker或crackers可能是试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其它通讯。因此防火墙常常过滤或记录53端口。需要注意的是你常会看到53端口做为UDP源端口。不稳定的防火墙通常允许这种通讯并假设这是对DNS查询的回复。Hacker常使用这种方法穿透防火墙。

      67&68 Bootp和DHCP UDP上的Bootp/DHCP:通过DSL和cable-modem的防火墙常会看见大量发送到广播地址255.255.255.255的数据。这些机器在向DHCP服务器请求一个地址分配。Hacker常进入它们分配一个地址把自己作为局部路由器而发起大量的“中间人”(man-in-middle)攻击。客户端向68端口(bootps)广播请求配置,服务器向67端口(bootpc)广播回应请求。这种回应使用广播是因为客户端还不知道可以发送的IP地址。

      79 finger Hacker用于获得用户信息,查询操作系统,探测已知的缓冲区溢出错误,回应从自己机器到其它机器finger扫描。

      80 HTTP服务器所用到的端口。

      109 POP2 并不象POP3那样有名,但许多服务器同时提供两种服务(向后兼容)。在同一个服务器上POP3的漏洞在POP2中同样存在。

      110 POP3 用于客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少有20个(这意味着Hacker可以在真正登陆前进入系统)。成功登陆后还有其它缓冲区溢出错误。

      137 NetBIOS name service nbtstat (UDP) 这是防火墙管理员最常见的信息。

      139 NetBIOS File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows“文件和打印机共享”和SAMBA。在Internet上共享自己的硬盘是可能是最常见的问题。大量针对这一端口始于1999,后来逐渐变少。2000年又有回升。一些VBS(IE5 VisualBasic SCripting)开始将它们自己拷贝到这个端口,试图在这个端口繁殖。

      143 IMAP 和上面POP3的安全问题一样,许多IMAP服务器有缓冲区溢出漏洞运行登陆过程中进入。记住:一种Linux蠕虫(admw0rm)会通过这个端口繁殖,因此许多这个端口的扫描来自不知情的已被感染的用户。当RadHat在他们的Linux发布版本中默认允许IMAP后,这些漏洞变得流行起来。Morris蠕虫以后这还是第一次广泛传播的蠕虫。这一端口还被用于IMAP2,但并不流行。已有一些报道发现有些0到143端口的攻击源于脚本。

        161 SNMP(UDP) 入侵者常探测的端口。SNMP允许远程管理设备。所有配置和运行信息都储存在数据库中,通过SNMP客获得这些信息。许多管理员错误配置将它们暴露于Internet。Crackers将试图使用缺省的密码“public”“private”访问系统。他们可能会试验所有可能的组合。SNMP包可能会被错误的指向你的网络。Windows机器常会因为错误配置将HP JetDirect remote management软件使用SNMP。HP OBJECT IDENTIFIER将收到SNMP包。新版的Win98使用SNMP解析域名,你会看见这种包在子网内广播(cable modem, DSL)查询sysName和其它信息。

      162 SNMP trap 可能是由于错误配置

      177 xdmcp 许多Hacker通过它访问X-Windows控制台, 它同时需要打开6000端口。

      513 rwho 可能是从使用cable modem或DSL登陆到的子网中的UNIX机器发出的广播。这些人为Hacker进入他们的系统提供了很有趣的信息。

      553 CORBA IIOP (UDP) 如果你使用cable modem或DSL VLAN,你将会看到这个端口的广播。CORBA是一种面向对象的RPC(remote procedure call)系统。Hacker会利用这些信息进入系统。

      635 mountd Linux的mountd Bug。这是人们扫描的一个流行的Bug。大多数对这个端口的扫描是基于UDP的,但基于TCP的mountd有所增加(mountd同时运行于两个端口)。记住,mountd可运行于任何端口(到底在哪个端口,需要在端口111做portmap查询),只是Linux默认为635端口,就象NFS通常运行于2049端口。

      1024 许多人问这个端口是干什么的。它是动态端口的开始。许多程序并不在乎用哪个端口连接网络,它们请求操作系统为它们分配“下一个闲置端口”。基于这一点分配从端口1024开始。这意味着第一个向系统请求分配动态端口的程序将被分配端口1024。为了验证这一点,你可以重启机器,打开Telnet,再打开一个窗口运行“natstat -a”,你将会看到Telnet被分配1024端口。请求的程序越多,动态端口也越多。操作系统分配的端口将逐渐变大。再来一遍,当你浏览Web页时用“netstat”查看,每个Web页需要一个新端口。

      1025,1026 参见1024

      1080 SOCKS 这一协议以管道方式穿过防火墙,允许防火墙后面的许多人通过一个IP地址访问Internet。理论上它应该只允许内部的通信向外达到Internet。但是由于错误的配置,它会允许Hacker/Cracker的位于防火墙外部的攻击穿过防火墙。或者简单地回应位于Internet上的计算机,从而掩饰他们对你的直接攻击。WinGate是一种常见的Windows个人防火墙,常会发生上述的错误配置。在加入IRC聊天室时常会看到这种情况。

      1243 Sub-7木马(TCP)

      1433 MSSQL数据库服务端口

      27374 Sub-7木马(TCP)

       30100 NetSphere木马(TCP) 通常这一端口的扫描是为了寻找中了NetSphere木马。

      31789 Hack-a-tack 这一端口的UDP通讯通常是由于"Hack-a-tack"远程访问木马(RAT, Remote Access Trojan)。这种木马包含内置的31790端口扫描器,因此任何31789端口到317890端口的连接意味着已经有这种入侵。(31789端口是控制连接,317890端口是文件传输连接)

      32770~32900 RPC服务 Sun Solaris的RPC服务在这一范围内。详细的说:早期版本的Solaris(2.5.1之前)将portmapper置于这一范围内,即使低端口被防火墙封闭仍然允许Hacker/cracker访问这一端口。扫描这一范围内的端口不是为了寻找portmapper,就是为了寻找可被攻击的已知的RPC服务。

    ■如何查看本机开放端口

     

      默认状态下,Windows XP系统会打开很多“服务端口”,同时在你上网的时候也会打开一些动态窗口。想要查看本地电脑打开了哪些端口、有哪些电脑正在与本地电脑交换数据,盖茨大叔已经在windows 系统内预置了查询手段,当然了,也有一些专门的程序可以查看。

        首先让我们来看看,windows xp自带的查询手段吧,我们将用到的工具是windows xp内置的MSdo工具。

        运行方法:直接用快捷键WIN+R调出运行程序栏,然后输入cmd,回车就可以进入到MSdos工具了。


        我们需要使用到的命令为netstat(网络状况)。进入MSdos窗口,输入netstat,然后回车就可以看到目前本地连接的所有情况以及打开的窗口。


        Proto表示连接使用的网络协议,Local Address代表本地电脑名称和打开的端口号(图中本机1024之前的端口已经全部被关闭了),Foreign Address是远程计算机的IP地址和端口号,State表明当前TCP的连接状态,图中established表示的是保持中的连接。此时我使用了2个即时通讯软件都在线,表示本地正在与远程电脑保持连接。

      如果你在DOS窗口中输入了netstat -nab命令,还将显示每个连接都是由哪些程序创建的。


        上图中本地电脑的135端口,就是由svchost.exe程序创建的,该程序一共调用了5个组件(WS2_32.dll、RPCRT4.dll、rpcss.dll、svchost.exe、ADVAPI32.dll)来完成创建工作。而下方打红框的则是上面那个保持连接的即时通讯软件,使用了本地电脑的1041端口,与远程的192.168.1.1相连接。

        假如你发现本地电脑上出现了可疑的进程,就可以用该命令察看它调用的相关Dll文件,由此来确定是否为木马之类的黑客软件。

      2.使用端口查看类软件

      能实现netstat命令的端口监视类软件能查看本地计算机打开的端口,而且外观看起来更漂亮。这类软件非常多,著名的有Tcpview、Port Reporter、网络端口查看器等。小编比较推荐的是TcpvIEw,可以非常直观的让你监视本机的网络连接情况。

        下面就请出“TCPVIEw”,它一款静态显示当前PC的端口与线程的工具,占用资源少,在NT内核的系统如win2000、xp、2003等操作系统中使用可以显示端口所对应的程序图标,让你一眼就能看出某个端口是什么程序所打开的。


        有些运行的程序名称可能会与系统内的程序名称一样或者类似,但实际上却是黑客软件。其实,我们可以从硬盘的路径判断出来,在某个程序上点右键,在弹出的菜单中选择 “进程属性”。


        只要看看程序路径就知道是否为正常程序了,非常好用吧!

     

    ■如何关闭本机不用端口

     

        之前说过,默认下Windows XP会打开很多端口,但是很多端口你并没有使用到。一旦你上网,黑客就可以通过一些有潜在危险的端口连上你的电脑,因此对于那些不需要的端口你应该选择关闭。

        而之前也说过,每个开放的端口都对应着一个系统服务进程或者软件的应用接口。目前我们主要需要预防的就是:TCP139、445、593、1025 端口和 UDP123、137、138、445、1900端口、以及一些流行病毒的后门端口(如 TCP 2513、2745、3127、6129 端口),以及远程服务访问端口3389。

        首先,我们应该通过组策略管理器将一些较少用到的系统服务关闭。使用WIN+R键调出运行栏,然后键入services.ms后回车,然后找到不需要的系统服务选择停止即可。如果您对系统服务不是那么精通,可以参照小编已经优化好的系统服务。


        一般来说台式电脑保证上面开启的系统服务就可以了,如果您需要知道更多的资料可以在网上查找一些相关的优化指南。

        最简单的就是直接安装一个防火墙,然后配置相应防火墙策略就可以完全防范了。


    ■重新定义默认端口,保护系统安全

     

      假使本地计算机需要使用的服务其默认端口被黑客破坏的几率很大,你可以将它重定义到另一个地址,这样即可隐藏公认的默认端口,降低受破坏机率,保护系统安全。

      例如你的电脑上开放了远程终端服务(Terminal Server)端口(默认是3389),可以将它重定向到另一个端口(3333),方法是:

      1.在本机上(服务器端)修改,使用WIN+r快捷键调出运行栏,输入regedit后回车。找到下列两个注册表项,将其中的 PortNumber,全部改成自定义的端口(3333)即可:

      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]

      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]


      2.在客户端上修改

       依次单击“开始→程序→附件→通讯→远程桌面连接”,打开“远程桌面连接”窗口,单击“选项”按钮扩展窗口,填写完相关参数后,单击“常规”下的“另存为”按钮,将该连接参数导出为.rdp文件。用记事本打开该文件,在文件最后添加一行:server port:i:1234 (这里填写你服务器自定义的端口)。以后,直接双击这个.rdp 文件即可连接到服务器的这个自定义端口了。

    展开全文
  • 网络地址转换NAT

    2021-03-22 17:04:30
    NAt 内部主机想要通信,必须主动和公网的一个IP通信,路由器负责建立一个映射关系,从而实现数据的转发。 NAT功能: NA不仅能解决IP地址不足的问题,而且还能够有效地避免来自外部的人入侵,隐藏并保护网络内部的...

    网络地址转换NET

    可以分为静态NAT和动态NAT两类

    NAT的工作原理

    NAT就是用来进行公网地址和私网地址之间转换,使私网的主机可以和公网主机之间能够正常通信的一个协议。将内网地址和端口号转换成合法的公网地址和端口号。通信
    正常情况下外网主机和内网主机之间是不能够进行通信。如果想要内网主机和外网主机能够进行正常通信的话,就需要进行NET的设置,使路由器进行映射,给内外网进行地址的转换,从而实现数据的转发。

    NAT功能:

    1以解决IP地址不足的问题。
    2.宽带分享:这是 NAT主机的最大工为能。
    3.安全防护: NAT之内的PC联机到INTERNET上面时,他的显示的IP是NAT主机的公网IP.所以clinet端的PC就具有一发程度的安全性,外界在进行portscan (端口扫描)的时侯,就侦测不到源clinet端的PC。
    优点:节省公有合法IP地址、处理地址重叠, 增强灵活性,安全性。
    缺点:延迟增大,配置和维护的复杂性不支持某些应用(比如VIPN)。

    在这里插入图片描述

    进行下图的配置

    静态NAT

    静态NAT可以实现私网地址和公网地址之间一对一的转换。但有多少个私网地址就要配置多少公网地址,所以静态NAT不能够节约公网地址,但可以起到隐藏内部网络的做用。
    内网向外网发送报文时,静态NAT将报文的源IP地址改为对应的公网地址,外网向内网发送响应报文时,静态NAT将报文的目的地址替换为对应的私网地址。

    静态NAT有两种配置方法:

    第一种:
    全局模式下设置静态NAT
    [R1]nat static enable global 9.9.9.9 inside 192.168.100.1
    [R1]int g0/0/1 ###外网口
    [R1-GigabitEthernet0/0/1]nat static enable .
    ###在网口上启动nat static enable 功能
    在这里插入图片描述
    在这里插入图片描述

    第二种:
    直接在接口_上声明nat static ###外网口
    [R1 -GigabitEthernet0/0/1]nat static global 9.9.9.9 inside 192.168.100.1
    [R1]dis nat static ###查看NAT静态配置信息
    在这里插入图片描述

    在这里插入图片描述

    动态NAT

    多个私网IP地址对应多个公网IP地址,基于地址池一对一映射,这也不能够节约公网IP。

    动态NAT配置代码

    1、配置外部网凸和内部网口的IP地址
    2、定义合法IP地址池
    [R1]nat address-group 2 12.0.0.100 12.0.0.120
    ###新建一 个名为1的nat地址池
    3、定义访问控制列表
    [R1]acl 2000
    ###创建ACL,允许源地址为192.168.100.0/24网段和12.0.0.0/24的数据通过
    [R1-acl-basic-2000]rule permit source 192.168.20.0 0.0.0.255
    [R1-acl-basic-2000]rule permit source 12.0.0.0 0.0.0.255
    4、在外网口,上设置动态IP地址转换
    [R1-acl-basic-2000]int g0/0/1 ###外网口
    [R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 2 no-pat
    ###将ACL2000匹配的数据转换为改接口的IP地址作为源地址(no pat 不做端口转换,只做IP地址转换,默认为pat)
    [R1]dis nat outbound ###查看NAT Outbound的信息

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    PAT端口多路复用

    PAT又称为NAPT (Network Address Port Translation),它可以实现一个公网地址和多个私网地址之间的映射,因此节约了公网地址。
    PAT的基本原理就是将不同私网地址报文的源IP地址转换为同一公网地址,但他们被转换为该地址的不同的端口号,从而使多个私网IP可以对应同一公网地址。
    PAT有以下两个作用:
    1.改变数据包的ip地址和端口号;
    2.能够大量节约公网IP地址。

    PAT的类型有以下:
    1.动态PAT,包括NAPT和Easy IP;
    2.静态PAT,包括NAT Server.

    PAT配置

    NAPT:多个私网IP地址对应固定外网IP地址( 比如200.1.1.10),配置方法与动态NAT类似
    1、配置外部网口和内部网口的IP地址
    2、定义合法IP地址池
    [R1]nat address-group 1200.1.1.10 200.1.1.10
    ###使用一一个固定IP
    3、定义访问控制列表
    [R1]acl 2000 ###允许源地址为192.168.30.0/24网段的数据通过
    [R1-acl-adv-2000]rule permit source 192.168.30.0 0.0.0.255
    4、在外网口,上设置IP地址转换
    [R1-acl-basic-2000]int g0/0/1 ###外网口
    [R1 -GigabitEthernet0/0/1]nat outbound 2000 address-group 1

    #####EasyIp: 多个私网IP地址对应外网口公网IP地址(比如12.0.0.1)
    1、配置外部网口和内部网口的IP地址
    2、定义合法IP地址池
    由于直接实验外网口IP地址所以不用再定义IP地址池
    3、定义访问控制列表
    [R1]acl 3000 ###允许源地址为192.168.30.0/24网段的数据通过
    [R1-acl-adv-3000]rule permit ip source 192.168.30.0 0.0.0.255
    4、在外网口,上设置IP地址转换
    [R1]int g0/0/1 ###外网口
    [R1-GigabitEthernet0/0/1]nat outbound 3000
    ###当ac13000匹配的源IP数据到达此接口时,转换为该接口的IP地址做为源地址
    [R1]display nat session all ##查看NAT的流表信息

    ####NATServer:端口映射,将私网地址端口映射到公网地址,实现内网服务器供外网用户访问
    [R1]int g0/0/1
    [R1-GigabitEthernet0/0/1]nat server protocol tcp global 9.9.9.9 www inside 192.168.10.100 www
    ###在连接公网的接口_上将私网服务器地址和公网地址做一对NAT映射绑定
    8 [R1-GigabitEthernet0/0/1]nat server protocol tcp global current-interface 8080 inside 10.1.1.1 www
    ##在连接公网的接口.上将私网服务器地址和外网接口做一对NAT映射绑定
    9 [R1-Gigabi tEthernet0/0/1]nat server protocol tcp global current-interface 2121 inside 10.1.1.2 ftp
    ##端口为21可以直接使用关键字“ftp"代替

    展开全文
  • 单个连接器与许多功能听起来不错,但支持可选的特性使它无法告诉什么是端口或电缆仅通过肉眼的观察。 普通消费者所需知道的是确保他们购买正确的USB c型产品和电缆是高于其前辈的技术,有更多的USB c类型只是一个可逆...
  • 第五章 宽带接入服务器(BRAS) 149 第一节 宽带接入服务器原理 150 1.1宽带接入服务器定义 150 1.2宽带接入服务器的系统介绍 150 1.2.1硬件设计结构 150 第二节BAS主流设备介绍 151 第三节 ERX-1400系列设备 151 ...
  • 如何将内网的摄像机流媒体数据发布到公网,如果用公网与局域网间的端口映射方式太过麻烦,一个摄像机要做一组映射,而且不是每一个局域网都是有固定ip地址,即使外网主机配置好了每一个摄像机的映射地址,也有可能会...
    最近很多人问,如何将内网的摄像机流媒体数据发布到公网,如果用公网与局域网间的端口映射方式太过麻烦,一个摄像机要做一组映射,而且不是每一个局域网都是有固定ip地址,即使外网主机配置好了每一个摄像机的映射地址,也有可能会因为宽带公网ip地址变动而导致配置无效。

    再换一个应用场景,当我们的所有IP摄像机都部署在一个没有有线网络的环境里面,所有的流媒体数据都要通过3G/4G网络发布出去。那么就必须有这么一个服务单元,能够通过先拉后推的方式,将内网的流媒体数据,推送并发布到外网的流媒体服务器上去:

    在实现先拉后推式转发之前,我们先熟悉下live555的运转模式,live555主要运转的是一个source与sink的循环,sink想要数据,就调用source的getNextFrame,source获取到数据后,再调用afterGettingFrame回调,返回给sink数据,sink处理完后,再调用source的getNextFrame,如此循环。那么我们这里要实现从摄像机获取数据,那么我们的source就是一个RTPSource,我们又需要将数据以RTP的方式发送给流媒体服务器,那么我们的sink就是一个RTPSink,我们需要打通的就是一个RTPSource到一个RTPSink的过程。

    ok,live555已经帮我们实现了大部分的功能,我们只需要将已有的部分组合起来就行了,这里我们主要用到的就是live555的ProxyServerMediaSession类和DarwinInjector类,我们用ProxyServerMediaSession从摄像机获取流媒体,再用DarwinInjector推送到Darwin Streaming Server,主要实现流程在下面代码注释中:

    /*
    	功能描述:	一个简单的RTSP/RTP对接功能,从RTSP源通过基本的RTSPClient流程,获取到RTP流媒体数据
    				再通过标准RTSP推送过程(ANNOUNCE/SETUP/PLAY),将获取到RTP数据推送给Darwin流媒体
    				分发服务器。
    				此Demo只演示了单个源的转换、推送功能!
    				
    	Author:	sunpany@qq.com
    	时间:		2014/06/25
    */
    
    #include "liveMedia.hh"
    #include "BasicUsageEnvironment.hh"
    #include "RTSPCommon.hh"
    
    char* server = "www.easydss.com";//RTSP流媒体转发服务器地址,<请修改为自己搭建的流媒体服务器地址>
    int port = 8554;				//RTSP流媒体转发服务器端口,<请修改为自己搭建的流媒体服务器端口>
    char* streamName = "live.sdp";		//流名称,推送到Darwin的流名称必须以.sdp结尾
    char* src = "rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp";//源端URL
    
    UsageEnvironment* env = NULL;		//live555 global environment
    TaskScheduler* scheduler = NULL;
    char eventLoopWatchVariable = 0;
    
    DarwinInjector* injector = NULL;	//DarwinInjector
    FramedSource* vSource = NULL;		//Video Source
    FramedSource* aSource = NULL;		//Audio Source
    
    RTPSink* vSink = NULL;				//Video Sink
    RTPSink* aSink = NULL;				//Audio Sink
    
    Groupsock* rtpGroupsockVideo = NULL;//Video Socket
    Groupsock* rtpGroupsockAudio = NULL;//Audio Socket
    
    ProxyServerMediaSession* sms = NULL;//proxy session
    
    // 流转发过程
    bool RedirectStream(char const* ip, unsigned port);
    
    // 流转发结束后处理回调
    void afterPlaying(void* clientData);
    
    // 实现等待功能
    void sleep(void* clientSession)  
    {
    	char* var = (char*)clientSession;
        *var = ~0; 
    }  
    
    // Main
    int main(int argc, char** argv) 
    {
    	// 初始化基本的live555环境
    	scheduler = BasicTaskScheduler::createNew();
    	env = BasicUsageEnvironment::createNew(*scheduler);
    
    	// 新建转发SESSION
    	sms = ProxyServerMediaSession::createNew(*env, NULL, src);
    	
    	// 循环等待转接程序与源端连接成功
    	while(sms->numSubsessions() <= 0 )
    	{
    		char fWatchVariable  = 0;  
    		env->taskScheduler().scheduleDelayedTask(2*1000000,(TaskFunc*)sleep,&fWatchVariable);  
    		env->taskScheduler().doEventLoop(&fWatchVariable);  
    	}
    	
    	// 开始转发流程
    	RedirectStream(server, port);
    
    	env->taskScheduler().doEventLoop(&eventLoopWatchVariable);
    
    	return 0;
    }
    
    
    // 推送视频到流媒体服务器
    bool RedirectStream(char const* ip, unsigned port)
    {
    	// 转发SESSION必须保证存在
    	if( sms == NULL) return false;
    
    	// 判断sms是否已经连接上源端
    	if( sms->numSubsessions() <= 0 ) 
    	{
    		*env << "sms numSubsessions() == 0\n";
    		return false;
    	}
    
    	// DarwinInjector主要用于向Darwin推送RTSP/RTP数据
    	injector = DarwinInjector::createNew(*env);
    
    	struct in_addr dummyDestAddress;
    	dummyDestAddress.s_addr = 0;
    	rtpGroupsockVideo = new Groupsock(*env, dummyDestAddress, 0, 0);
    
    	struct in_addr dummyDestAddressAudio;
    	dummyDestAddressAudio.s_addr = 0;
    	rtpGroupsockAudio = new Groupsock(*env, dummyDestAddressAudio, 0, 0);
    
    	ServerMediaSubsession* subsession = NULL;
    	ServerMediaSubsessionIterator iter(*sms);
        while ((subsession = iter.next()) != NULL)
    	{
    		ProxyServerMediaSubsession* proxySubsession = (ProxyServerMediaSubsession*)subsession;
    						
    		unsigned streamBitrate;
    		FramedSource* source = proxySubsession->createNewStreamSource(1, streamBitrate);
    		
    		if (strcmp(proxySubsession->mediumName(), "video") == 0)
    		{
    			// 用ProxyServerMediaSubsession建立Video的RTPSource
    			vSource = source;
    			unsigned char rtpPayloadType = proxySubsession->rtpPayloadFormat();
    			// 建立Video的RTPSink
    			vSink = proxySubsession->createNewRTPSink(rtpGroupsockVideo,rtpPayloadType,source);
    			// 将Video的RTPSink赋值给DarwinInjector,推送视频RTP给Darwin
    			injector->addStream(vSink,NULL);
    		}
    		else
    		{
    			// 用ProxyServerMediaSubsession建立Audio的RTPSource
    			aSource = source;
    			unsigned char rtpPayloadType = proxySubsession->rtpPayloadFormat();
    			// 建立Audio的RTPSink
    			aSink = proxySubsession->createNewRTPSink(rtpGroupsockVideo,rtpPayloadType,source);
    			// 将Audio的RTPSink赋值给DarwinInjector,推送音频RTP给Darwin
    			injector->addStream(aSink,NULL);
    		}
        }
    
    	// RTSP ANNOUNCE/SETUP/PLAY推送过程
    	if (!injector->setDestination(ip, streamName, "live555", "LIVE555", port)) 
    	{
    		*env << "injector->setDestination() failed: " << env->getResultMsg() << "\n";
    		return false;
    	}
    
    	// 开始转发视频RTP数据
    	if((vSink != NULL) && (vSource != NULL))
    		vSink->startPlaying(*vSource,afterPlaying,vSink);
    
    	// 开始转发音频RTP数据
    	if((aSink != NULL) && (aSource != NULL))
    		aSink->startPlaying(*aSource,afterPlaying,aSink);
    
    	*env << "\nBeginning to get camera video...\n";
    	return true;
    }
    
    
    // 停止推送,释放所有变量
    void afterPlaying(void* clientData) 
    {
    	if( clientData == NULL ) return;
    
    	if(vSink != NULL)
    		vSink->stopPlaying();
    
    	if(aSink != NULL)
    		aSink->stopPlaying();
    
    	if(injector != NULL)
    	{
    		Medium::close(*env, injector->name());
    		injector == NULL;
    	}
    
    	ServerMediaSubsession* subsession = NULL;
    	ServerMediaSubsessionIterator iter(*sms);
        while ((subsession = iter.next()) != NULL)
    	{
    		ProxyServerMediaSubsession* proxySubsession = (ProxyServerMediaSubsession*)subsession;
    		if (strcmp(proxySubsession->mediumName(), "video") == 0)
    			proxySubsession->closeStreamSource(vSource);
    
    		else
    			proxySubsession->closeStreamSource(aSource);
    	}
    
    	if(vSink != NULL)
    		Medium::close(vSink);<pre name="code" class="html">
    if(aSink != NULL)Medium::close(aSink);if(vSource != NULL)Medium::close(vSource);if(aSource != NULL)Medium::close(aSource);delete rtpGroupsockVideo;rtpGroupsockVideo = NULL;delete rtpGroupsockAudio;rtpGroupsockAudio = NULL;}
    
    

    程序还有许多要完善的地方,只是一个简单的实现。

    源码下载:

    http://pan.baidu.com/s/1sj6Ue4l

    非常感谢感谢6楼 Boris_Cao_2015 5天前 的回复,是这样的!

    “按着这个代码不同时支持音视频,要修改LIVE555里面DarwinInjector源码, stream channel id记得加1,因为RTCP instance不存在,所以RTP流的stream channel id必须自动加1, 否则跟RTCP的stream channel id重合,这就是原因。跟楼主和大家分享。嘻嘻!”

    ------------------------------------------------------------

    本文转自www.easydarwin.org,更多开源流媒体解决方案,请关注我们的微信:EasyDarwin 


    展开全文
  • 交换机收发原理

    2017-11-27 13:52:00
    交换机收发原理:工作在数据链路层,交换机拥有一条很高宽带的背部总线和内部交换矩阵。交换机的所有端口都挂接在这条总线上。当收到数据包以后,处理端口会查找内存中的MAC地址(就是是固化在网卡上串行EEPROM中的...

    交换机收发原理:工作在数据链路层,交换机拥有一条很高宽带的背部总线和内部交换矩阵。交换机的所有端口都挂接在这条总线上。当收到数据包以后,处理端口会查找内存中的MAC地址(就是是固化在网卡上串行EEPROM中的物理地址)挂接到那个端口,通过内部的交换矩阵将其发送到目的端口。目的端口不存在,就会广播到所有的端口,接收端口回应后交换机会学习新的MAC地址,并将其添加到内部MAC地址表中。

    下面用图的形式简单表述:

    假设交换机A和交换机BMAC地址都为空。

    现在主机11向主机13发送数据,因为交换机MAC地址为空,所以交换机A先学习。此时交换机A的地址为:


    wKioL1bmoOHhb2--AADvlVQlOuQ371.jpg

    因为交换机MAC的地址表为空,所以通过端口2和端口3发送广播。

    wKiom1bmoNTx_P7EAABLvjd8Ylo590.jpg

    交换机2通过4端口接收数据,会执行下列操作:

    1:学习MAC地址

    2:通过端口56发送广播

    此时交换机2的MAC地址为:

    wKioL1bmok2iufDYAAApxokiZo0374.jpg

    至此,主机13收到数据,12和14丢弃数据。



    本文转自 8yi少女的夢 51CTO博客,原文链接:http://blog.51cto.com/zhaoxiaohu/1751018,如需转载请自行联系原作者

    展开全文
  • H3C AR 18-2X系列路由器是H3C公司...该系列产品功能特性丰富,并支持Web网管、端口镜像等特性,带S的款型还内置硬件加密功能,具有极高的IPSec数据加密性能。AR 18-2X系列宽带路由器是中小企业和网吧等用户的理想选择。
  • AD9434.pdf

    2020-10-12 09:42:14
    该器件的转换速率最高可达500 MSPS,具有出色的动态性能,适合宽带载波和宽带系统使用。芯片上集成了全部必需功能,包括采样保持器与基准电压源,可提供完整的信号转换解决方案。VREF引脚可用来监控内部基准电压或...
  • STP生成树

    2021-03-15 14:04:07
    内容概要1、交换网络环路的产生2、STP简介(Spanning Tree Protocol)3、生成树的算法1、生成数算法的步骤2、网桥ID(BID)3、宽带与路径成本的关系4、选择根端口的依据4、BPDU(桥协议数据单元)1、BPDU的类型2、...
  • NAT基础知识

    2021-04-19 18:52:56
    工作原理:NAT用来将内网地址和端口号转换成合法的公网地址和端口号,建立一个会话,与公网主机进行通信。NAT外部主机无法主动跟位于NAT内部的主机通信,NAT内部主机想要通信,必须主动和公网的一个IP通信,路由器...
  • 巴伦(英语为balun)为一种三端口器件,或者说是一种通过将匹配输入转换为差分输出而实现平衡传输线电路与不平衡传输线电路之间的连接的宽带射频传输线变压器。巴伦的功能在于使系统具有不同阻抗或与差分/单端信令兼容...
  • 巴伦(英语为balun)为一种三端口器件,或者说是一种通过将匹配输入转换为差分输出而实现平衡传输线电路与不平衡传输线电路之间的连接的宽带射频传输线变压器。巴伦的功能在于使系统具有不同阻抗或与差分/单端信令兼容...
  • 巴伦到底是什么?

    千次阅读 2019-10-31 09:35:35
    巴伦(英语为balun)为一种三端口器件,或者说是一种通过将匹配输入转换为差分输出而实现平衡传输线电路与不平衡传输线电路之间的连接的宽带射频传输线变压器。巴伦的功能在于使系统具有不同阻抗或与差分/单端信令...
  • 什么是VLAN

    2013-10-23 09:59:12
    ISL是一个在交换机之间、交换机与路由器之间及交换机与服务器之间传递多个VLAN信息及VLAN数据流的协议,通过在交换机直接的端口配置ISL封装,即可跨越交换机进行整个网络的VLAN分配和配置。 编辑本段划分VLAN的基本...
  • 巴伦(英语为balun)为一种三端口器件,或者说是一种通过将匹配输入转换为差分输出而实现平衡传输线电路与不平衡传输线电路之间的连接的宽带射频传输线变压器。巴伦的功能在于使系统具有不同阻抗或与差分/单端信令兼容...
  • HCIA 网络基础

    2021-03-18 17:28:03
    宽带|8)x0.85 —交换机(二层设备,数据和电流间的转换) 网络基础: OSI模型 应用层 人机交互— 抽象语言  编码 表示层 编码二进制 会话层 提供会话地址,应用程序内部地址—没有统一标准 传输层 分段(受...
  • NatTypeTester.rar

    2020-08-13 18:46:26
    并且Server1主机的任何端口数据,都可以将数据送到NAT(210.21.12.140:8000),NAT都会将该报文转给Client(192.168.1.5:5000)。 但是Server2主机无法与Client主机进行通讯。因为Client从来没有和Server2通信过,...
  • 简单了解交换机

    2015-12-02 23:23:52
    简介是一种基于MAC地址识别,能完成封装转发数据帧功能的网络设备,工作在数据链路层。基本功能1.像集线器一样,交换机提供了大量可供线缆连接的端口,这样可以采用星型拓扑布线。2.像中继器、集线器和网桥那样,当...
  • 带宽:网络可通过的最高数据率,即每秒多少比特。 宽带:发送速率,宽带线路(每秒有更多的比特注入到线路中)——依然是串行传输 电路交换:需要拨号建立连接(专线)——浪费资源 分组交换:分组发送,接收组合 + ...
  • 如何将内网的摄像机流媒体数据发布到公网,如果用公网与局域网间的端口映射方式太过麻烦,一个摄像机要做一组映射,而且不是每一个局域网都是有固定ip地址,即使外网主机配置好了每一个摄像机的映射地址,也有可能会...
  • 巴伦的原理及应用

    千次阅读 2020-04-19 17:24:12
    巴伦(英语为balun)为一种三端口器件,或者说是一种通过将匹配输入转换为差分输出而实现平衡传输线电路与不平衡传输线电路之间的连接的宽带射频传输线变压器。巴伦的功能在于使系统具有不同阻抗或与差分/单端信令...
  • 由balanced(平衡)”的前三个字母“bal”与“unbalanced(不平衡)”的两个字母“un”组合而成)为一种三端口器件,或者说是一种通过将匹配输入转换为差分输出而实现平衡传输线电路与不平衡传输线电路之间的连接的宽带...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

宽带换数据端口