精华内容
下载资源
问答
  • 想测试 udp 端口连通性,但是 telnet 连接被拒绝,用 telnet 似乎不对。 Solution appledeMacBook-Pro:~ xxx$ nc -vuz x.x.x.x 514 found 0 associations found 1 connections: 1: flags=82<CONNECTED,...

    Problem

    想测试 udp 端口连通性,但是 telnet 连接被拒绝,用 telnet 似乎不对。

    Solution

    appledeMacBook-Pro:~ xxx$ nc -vuz x.x.x.x 514
    found 0 associations
    found 1 connections:
         1: flags=82<CONNECTED,PREFERRED>
        outif (null)
        src x.x.x.x port 52491
        dst x.x.x.x port 514
        rank info not available
    
    Connection to x.x.x.x port 514 [udp/syslog] succeeded!

    说明该 udp 端口正常监听。

    Reference

    测试udp 端口是否开放

    展开全文
  • udp实现了个跨平台的telnet小程序,用来测试基于udp的消息收发. 代码如下: package main import ( "fmt" "flag" "net" "strconv" "bufio" "os&...

    udp实现了个跨平台的telnet小程序,用来测试基于udp的消息收发.

    代码如下:

    package main
    
    import (
    	"fmt"
    	"flag"
    	"net"
    	"strconv"
    	"bufio"
    	"os"
    )
    func write(listener *net.UDPConn,dstAddr *net.UDPAddr) {
    	for {
    		bio := bufio.NewReader(os.Stdin)
    		buf,_,_:= bio.ReadLine()
    		listener.WriteToUDP(buf, dstAddr)
    	}
    }
    func read(listener *net.UDPConn) {
    	for {
    		buf :=make([]byte, 1400)
    		size, remote, err := listener.ReadFromUDP(buf)
    		if err != nil {
    			fmt.Printf("error during read: %s", err)
    		}
    		fmt.Println("recv:", string(buf[:size]), " from ", remote.String())
    	}
    }
    func run(lport *string , ip *string , sport *string) {
    	port,err:=strconv.Atoi(*lport)
    	addr := &net.UDPAddr{IP: net.ParseIP("0.0.0.0"), Port:port }
    	port,err =strconv.Atoi(*sport)
    	dstAddr := &net.UDPAddr{IP: net.ParseIP(*ip), Port: port}
    	listener, err := net.ListenUDP("udp", addr)
    	defer listener.Close()
    	if err != nil {
    		fmt.Println(err, " recv udp ", port)
    		return
    	}
    	//send to its subs
    	go read(listener)
    	go write(listener, dstAddr)
    	select{}
    }
    func main(){
    	lport := flag.String("lport", "40109", "udp listen port")
    	ip := flag.String("ip", "0.0.0.0", "udp send ip")
    	sport := flag.String("sport", "40109", "udp send port")
    
    	flag.Parse()
    	fmt.Println("listen port:", *lport)
    	fmt.Println("send ip", *ip)
    	fmt.Println("send port:", *sport)
    	run(lport,ip,sport)
    }

    main函数中,实现了命令手册的功能,有3个参数,本地监听端口,目标ip和端口.

    在read函数中,将收到的网络数据,按行显示.

    在write函数中,按行从命令行读入,通过网络发送到对端.

    测试可以直接本地回显,也可以多程序启动,实现点对点,广播等更复杂的形式.

    用法如下:

    go build main.go
    ./main -lport 1234 -sport 4567 -ip 192.168.1.15
    ./main -h
    ./main

    以上3项测试来完成3种不同功能.

    展开全文
  • 我们都知道检测TCP端口是否可通的命令是telnet,在Windows和Linux都可以用,但telnet不能检测udp包。 Telnet 检测TCP端口 [root@free ~]# telnet 127.0.0.1 8080 Trying 127.0.0.1... Connected to 127.0.0.1. ...

    Linux下 Netstat工具 简称NC,号称是网络工具中的“瑞士军刀”。 我们都知道检测TCP端口是否可通的命令是telnet,在Windows和Linux都可以用,但telnet不能检测udp包。

    nc连接交换机测试端口

    [root@free ~] nc 172.24.0.75 23 
    

    Telnet 检测TCP端口

    [root@free ~]# telnet 127.0.0.1 8080
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    

    NC 检测TCP端口

    [root@test ~]# nc -vz 127.0.0.1 8080
    Connection to 127.0.0.1 8080 port [tcp/*] succeeded!
    

    NC 检测UDP端口

    检测UDP端口的时候不会立即返回测试结果,可能需要等待几秒钟

    [root@test ~]# nc -uz 127.0.0.1 8080
    Connection to 127.0.0.1 8080 port [udp/*] succeeded!
    

    测试UDP连接方法

    A机器,发布服务端口。监听机器上运行:

    使用UDP模式监听本机的8080 端口

    nc -ul 8090
    

    B机器,连接A机器上运行:

    nc -u x.x.x.x 1080
    

    接下来就可以使用UDP模式向该IP的8090 端口发送&接收信息。

    展开全文
  • Linux| |对于UDP的学习

    万次阅读 多人点赞 2019-01-07 08:51:10
    UDP # 前序 UDP(用户数据报协议)没有连接的,是面向数据报的,是不可靠 ... 0--1023:http,ssh,ftp,telnet等一些协议端口号都是固定的,对于操作系统来说是不能对其进行分配的 一些固定的端口号...

    UDP


    # 前序

    UDP(用户数据报协议)没有连接的,是面向数据报的,是不可靠

    # 套接字

    就是IP地址+端口号

    IP地址:4字节

    端口号:2字节,也就是说范围是0~65535

    • 端口号分为

    • 知名端口号

      • 0--1023:http,ssh,ftp,telnet等一些协议端口号都是固定的,对于操作系统来说是不能对其进行分配的

      • 一些固定的端口号

      1. ssh服务器,使用22端口

      2. ftp服务器,使用21端口

      3. telnet服务器,使用23端口

      4. http服务器,使用80端口

      5. https服务器,使用443端口

    • 操作系统动态分配的端口号

      • 客户端服务器的端口号,这个范围的端口号操作系统可以对其进行分配

    • 查看端口号

    • less /etc/services
       //就可以查看Linux下所有的端口号了

       

    IP地址的理解:

    • IP地址用来标识一个主机

    端口号的理解:

    • 端口号就是用来告诉操作系统要对于那一个进程进行操作,也就是说端口号就是用来标识一个进程

    • 一个端口号只可被一个进程所占用,但是一个进程可以拥有多个端口号,也就是进程和端口号是一对多的关系

    • 当我们写一个程序使用端口号的时候,要避开这些知名端口号

    【问题】

    1. 一个进程是否可以bind多个端口号呢?

      • 可以,因为一个进程可以打开多个文件描述符,而每一个文件描述符都对应着一个端口号,所以一个进程可以绑定多个端口号

    2. 一个端口号是否可以被多个进程bind?

      • 不可以

      • 如果一个进程先绑定一个端口号,然后再fork一个子进程,这样的话就实现了多个进程绑定一个端口号,但是不同的进程绑定同一个端口号是不可以

      • TIME_WAIT状态,服务器不能立即重启也说明不用进程不能同时绑定同一个端口号

    3. 多个进程可以监听同一个端口号吗?

      • 可以。监听之前要进行创建套接字->绑定ip::端口号->监听。我们可以在bind之前使用setsockopt函数,设置套接字选项,其中就包括REUSEADDR这个选项,表明多个进程可以复用bind函数中指定的地址和端口号

    所以套接字就可以准确的标识一台主机上的一个进程,从而完成计算机之间的通信

    计算机之间的通信:

    • 主机A的某个进程与主机B上的另一个进程进行通信

     

    # 网络字节序转换

    对于数据在网络中传输的时候有着自己遵循的传输规则大端传输

    对于主机上的数据的传输序列有着两种:

    • 大端:即高位字节序放在低地址上

    • 小端:即低位字节序放在低地址上

    • 传输:均是先传输低地址上的数据然后是高地址上的数据

    所以对于主机上的数据传输的时候传输到网络上的时候有可能导致数据错误(例如主机上是小端的时候,所以需要进行转换)

    转换函数:

    #include <arpa/inet.h>
    ​
    uint32_t htonl(uint32_t hostlong);
    uint16_t htons(uint16 hostshort);
    uint32_t ntohl(uint32_t netlong);
    uint16_t ntohs(uint16_t netshort);

    h:表示主机host name

    n:表示网络network

    l:表示4字节long

    s:表示2字节short

     

    # 地址转换函数

    • 字符串转化为in_addr

      • in_addr_t inet_addr(const char* strptr)

    • in_addr转化为字符串

      • char* inet_ntoa(struct in_addr inaddr)

      • 具有不可重入性,也就是不可多次调用,因为该函数自己在静态区开辟一块空间用来存放IP地址字符串的

     

    # UDP协议

    UDP协议端格式

    插图:UDP协议端格式

    • 16为UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度(64KB)

    • 检验和:如果校验和出错,就会直接丢弃(检验的是把首部和数据部分一起都检验)

      • 校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还要在重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检验是否出错。

    • 源端口号:在对方回信是选用,不需要时可用全0

    • 目的端口号:在终点交付报时必须要用到

    • 长度:UDP用户数据报的长度,其最小值是8(仅有首部)

    UDP的特点

    • 无连接:直到对端的IP和端口号就直接进行传输,不需要建立连接

    • 不可靠:没有确认机制,没有重传机制;因为没有网络故障该段无法发送到对方,UDP协议层也不会给应用层返回任何错误信息

    • 面向数据报:不能够灵活的控制读写数据的次数和数量

    • 控制选项较少,数据传输过程中延迟小,数据传输效率高

    面向数据报

    • 应用层交给UDP多长的报文,UDP原样发送,既不会拆分也不会合并

    • 例:用UDP传输100个字节的数据

      • 如果发送端调用一次sendto,发送100个字节。那么接收端也必须调用对应的一次recvfrom,接收100字节;而不能循环调用10次recvfrom,每次发送10个字节

    UDP的缓存区

    • UDP没有发送缓存区,调用sendto之后会直接交给内核,由内核·将数据传给网络层协议进行后续的传输动作。因为UDP是不面向连接的,所以没有重发机制,也就不需要发送缓存区将已经发送的数据保存下来为了发送失败进行重传做准备

    • UDP具有接收缓存区。但是这个接收缓存区不能保证收到的UDP报的顺序和发送UDP报的顺序一致;如果缓存区满了,在到达的UDP数据就会被丢弃

    UDP的Socket既能读,也能写,全双工

    UDP的使用注意事项

    • UDP协议首部中有一个16位的最大长度,也就是说一个UDP能传输的数据的最大长度是64K(包含UDP首部)。但是64K在当今的互联网环境下,是一个非常小的数字。如果我们需要传输的数据超过64K,就需要应用层手动的分包,多次发送,并在接收端拼装

    • UDP首部中校验和的计算方法有些特殊。在计算校验和时,要在UDP用户数据报之前增加12个字节的伪首部

    • 伪首部既不向下传输也不想上递送,而仅仅是为了计算校验和

    • 与IP数据报的校验和只检验IP数据报的首部不同,UDP的校验和是把首部和数据部分一起都检验

    伪首部:

    插图:伪首部

    基于UDP的应用层的协议

    • NFS:网络文件系统

    • TFTP:简单文件传输文件协议

    • DHCP:动态主机配置协议

    • DNS:域名解析协议

    面试题用UDP实现可靠传输?

    参考TCP的可靠性机制,在应用层实现类似的逻辑

    • 引用序列号,保证数据顺序

    • 引入确认应答,确保对端收到了数据

    • 引入超时重传,如果隔一段时间没有应答,就重发数据

     

    1. 对于socket函数的使用

    1.1 函数原型

    int socket(int domain, int type, int protocol);
    ​
    domain: 领域
        AF_INET:IPV4
        AF_INET6:IPV6
    type: 类型
        SOCK_STREAM
        SOCK_DGARM
    protocol: 协议

    1.2 函数的作用

    在通信领域中创建一个未被绑定的套接字,并且返回一个文件描述符,可以在以后对套接字进行操作的函数调用中使用

     

    2. 对于bind函数的使用

    2.1 函数原型

    int bind(int socket, const struct sockaddr* address, socklen_t address_len);

    2.2. 函数的作用

    该函数采用先前创建好的套接字来对于IP地址以及端口号进行绑定,也就是表示该套接字可以标识出在一个网络中一台确定的主机并且主机中的进程

     

    3. 对于recvfrom函数的使用

    3.1 函数原型

    ssize_t recvfrom(int socket, void* restrict buffer, size_t length, 
                     int flags, struct sockaddr* restrict address, 
                    socklen_t* restrict address_len);
    ​
    socket:要接受那一个套接字的消息
    buffer:用来接收消息的缓存区
    length:接收的消息的长度
    flags:类型
    address:空指针或者存储发送信息的sockaddr结构
    addless_len:指定地址参数指向的sockaddr结构的长度
    3.2 函数的作用

    3.2 函数的作用  

    用来接收从socket套接字发送来的消息。该套接字的sockaddr结构也知道

     

    4. 对于sendto函数的使用

    4.1 函数原型

    ssize_t recvfrom(int socket, const void* message, size_t length, 
                     int flags, const struct sockaddr* dest_addr, 
                    socklen_t* dest_len);

    4.2 函数的作用

    该函数是socket套接字从dest_addr出接收消息

     

    5. 扩展知识

    5.1 netstat

    netstat是一个用来监控TCP/IP网络非重要工具

    语法:netstat [选项]

    功能:查看网络状态

    选项:

    • -a,显示所有连线的Socket

    • -c,持续列出网络状态

    • -n,直接使用ip地址,而不通过域名服务器,也就是显示为数字

    • -l,显示监控中的服务器的Socket,仅列出监听(Listen)状态下的Socket

    • -p,显示正在使用Socket的程序的识别码和名称(PID/Program name)

    • -t,显示TCP传输协议的连线状况

    • -u,显示UDP传输协议的连线状况

    • -v,显示指令执行过程

    • -V,显示版本信息

    • -x,显示UNIX传输协议的连线状况

    • -s,显示网络工作信息统计表

    • -h,在线帮助

     

    5.2 pidof

    查看服务器进程id是非常方面

    语法:pisdof [进程名]

    功能:通过进程名,查看进程id

     

    5.3 scp命令

    基于ssh登录进行的网络安全的远程文件拷贝命令

    例:要将自己当前路径下的clinet文件发送到主机IP为192.168.153.140的home目录下

    scp ./clinet root@192.168.153.140:/home

     

     

    5.4 关于防火墙的命令

    • 启动:systemctl start firewalld

    • 关闭:systemctl stop firewalld

    • 查看状态:systemctl status firewalld

    • 开机禁用:systemctl disable firewalld

    • 开机启用:systemctl enable firewalld

    # 对于UDP书写服务器的思路

    由于UDP是无连接的,所以对于两个处于同一局域网下计算机的进程之间通信,所以是不需要两台计算机之间的进程进行连接的,对于UDP使用的接口是需要包含知道从哪里接收消息的,要发送消息到哪里的。

    • 实现本地通信

      • 服务器

        • 只需要服务器创建一个套接字

        • 使该套接字对于本地地址(127.0.0.1)进行绑定,并且绑定一个端口号(1024--65535)就行了

          • 绑定本地地址是为了对于本地计算机的两个进程进程通信,而绑定端口号是为了绑定一个进程,是为了对于客户端进行发送消息到服务器的时候,可以找到服务器

        • 然后就接受客户端发来的消息

        • 对于客户端的消息进行处理然后就可以再次将处理后的消息进行返回

        • 插图:服务器流程

      • 客户端

        • 绑定一个套接字

          • 为了绑定一个进程,可以和服务器进行通信,将消息发送过去的时候要让服务器知道是哪一个进程再和他进程通信

        • 客户端只需要向服务器发送消息

        • 然后再次从客户端接收消息就好了,不需要考虑要进行连接

        • 插图:客户端流程

    • 实现处于同一局域网下的不同主机间进行通信

      • 服务器

        • 和本地通信的一致,只是对于套接字绑定的ip地址不一样了

        • 也对于套接字要绑定该局域网的ip地址以及一个端口号不需要在绑定本地地址(127.0.0.1)

          • 这样的话处于同一局域网下的计算机的进程就可以进行通信了

      • 客户端

        • 对于客户端来说没有任何改变,仍然是只需要知道服务器的ip和端口号就行了

     

    # 对于UDP服务器要注意的问题

    • 启动客户端

      • 启动客户端的时候必须给客户端输入一个ip地址和端口号,这个ip地址和端口号也就是要知道客户端要发送消息给哪一个服务器进行发送

    • 启动服务器

      • 必须要给服务器绑定一个ip地址和端口号,也就是要注意该服务器处于该计算机上的哪一个进程上

    展开全文
  • tcp端口测试用telnet #!/bin/bash for line in `cat iplist.txt | grep -v ^# |grep -v ^$` do ip=`echo $line | awk 'BEGIN{FS="|"} {print $1}'` port=`echo $line | awk 'BEGIN{FS="|"} {print $2}'` ...
  • W5500+UDP 多播\app.depW5500+UDP 多播\app.ewdW5500+UDP 多播\app.ewpW5500+UDP 多播\app.ewwW5500+UDP 多播\app.icfW5500+UDP 多播\Debug\Exe\app.binW5500+UDP 多播\Debug\Exe\app.outW5500+UDP 多播\Debug\List\...
  • 文件名大小更新时间W5500_UDP\app.dep351542014-03-11W5500_UDP\app.ewd382672013-12-04W5500_UDP\app.ewp455212013-12-11W5500_UDP\app.eww1572011-10-19W5500_UDP\app.icf13402013-12-04W5500_UDP\Debug\Exe\app....
  • DHCP是动态主机配置协议,默认端口67(服务器) 68(客户)DHCP用的端号是UDP67和UDP68,这两个端口是正常的DHCP服务端口,你可以理解为一个发送,一个接收。客户端向68端口(bootps)广播请求配置,服务器向67端口...
  • FTP:采用TCP协议,默认...TELNET采用TCP协议,默认端口23; SMTP采用UDP协议,默认端口25; DNS采用UDP协议,默认端口53; TFTP采用UDP协议,默认端口69; WWW采用TCP协议,默认端口80; POP采用TCP协议,默认端口110.
  • Telnet disconnect

    2020-12-01 13:32:36
    //#define DEBUG_UDP_SUPPORT 1 <h1>define DOMOTICZ_SUPPORT 0 <h1>define HOMEASSISTANT_SUPPORT 0 <p>//#define I2C_SUPPORT 1 //#define INFLUXDB_SUPPORT 1 //#define IR_SUPPORT 1 //#define LLMNR_SUPPORT 1 ...
  • TCP端口大家都知道,比如80端口,可以使用 telnet ip 80,来验证端口是否正常监听,那UDP端口是否可以同样测试呢?详细如下:下面我们来进行测试,123端口是服务器42.11.12.13打开的UDP端口,udp 0 0 42.1...
  • 这个命令主要是测试远程电脑指定的端口是否打开,使用格式如下: telnet ip 端口 (如果不写端口,默认连接23号端口) 例: 测试本机23端口:telnet 127.0.0.1 23 或者telnet 127.0.0.1 测试指定电脑的80端口:telnet...
  • TCP和UDP

    2021-01-08 10:03:03
    TCP和UDP端口TCP的原理UDP的原理 端口 每个应用程序进出网络都需要经过一个唯一端口,通过端口号来识别数据交由哪个应用程序处理 ...TCP23 TELNET TCP25 SMTP UDP53 DNS TCP的原理 UDP的原理 ...
  • TCP 和 UDP

    2021-01-16 17:12:09
    TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输。但是可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此TC...
  • swoole-udp

    2019-11-05 14:58:50
    udp 首先在这篇文章开始前,给大家说一下udp是什么 ...在这里我们不能再使用telnet 命令去连接,我们需要另外一个指令 首先先确定自己有没有netcat,如果没有,直接运行 yum install -y nc 然后我...
  • telnet端口问题

    2017-12-27 23:05:00
    今天测试发现telnet 一个端口不通,开始还以为是服务开放这个端口有问题,后来才发现这个端口是udp的。而telnet下层走的tcp协议,自然无法测试那些tcp的端口。 而之前下意识里还总以为都可以用它来测试端口通不通呢...
  • TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。...(2) Telnet:一种用于远程登陆的端口,使用2...
  • TCP&UDP

    万次阅读 2019-07-27 14:12:57
    TCP特性:面向连接的应用双工模式操作差错检测数据包序列数据有确认数据恢复功能 包含的常见协议:HTTP(超文本传输协议80)SMTP(简单邮件传输协议25)...UDP特性:为应用程序提供没有可靠性的传输机制无连接...
  • 关于telnet的安装

    2018-08-20 05:12:06
    准确地说,网络通不通用ping,tcp端口能不能访问用telnet或nc,udp端口能不能访问用nc . 下面把telnet的安装做一个介绍: 1.先检查系统上是否安装了telnet,如下图代表已经安装了客户端和服务端。 [root@bigdata-pro...
  • 测试UDP端口

    千次阅读 2013-12-11 16:53:18
    TCP端口大家都知道,比如80端口,可以使用 telnet ip 80,来验证端口是否正常监听,那UDP端口是否可以同样测试呢?详细如下: 下面我们来进行测试,123端口是服务器42.11.12.13打开的UDP端口, udp
  • CentOS 设置Telnet

    2020-07-12 23:07:37
    yum install telnet-server systemctl enable telnet.socket systemctl start telnet.socket systemctl start firewalld ... iptables -I INPUT -p udp --dport 23 -jACCEPT firewall-cmd --reload firewal...
  • 大家在工作中,应该经常会用到监测tcp、udp端口的场景,tcp的端口连接大家应该都知道,但是udp就相对来说比较麻烦一些了,所以今天主要给大家分享一个如何监测upd端口是否在线的功能。1 TCP端口的连通性TC端口的连通...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,683
精华内容 1,073
关键字:

telnetudp