udp

nslookup、arp、netstat、traceroute

Deadly 提交于 2020-03-10 07:18:32
nslookup   主要用于测试DNS服务器是否正常工作,除此之外,还可以对域名和IP地址进行查询。 [root@weekend110 ~]# nslookup > www.guet.edu.cn        输入待查询的域名 www.guet.edu.cn Server: 192.168.80.2 Address: 192.168.80.2#53 以上为所使用的DNS服务器 Non-authoritative answer: Name: www.guet.edu.cn Address: 202.193.64.56 Name: dns.guet.edu.cn Address: 202.103.243.112 Name: mango.guet.edu.cn Address: 202.193.64.33 > 202.193.64.33      输入待查询的IP地址 Server: 192.168.80.2 Address: 192.168.80.2#53 以上为所使用的DNS服务器 Non-authoritative answer: 33.64.193.202.in-addr.arpa name = 33.64.193.202.in-addr.arpa. 33.64.193.202.in-addr.arpa name = mango.gliet.cn. 33.64.193.202

QQ通信原理概述

不羁的心 提交于 2020-03-10 04:31:38
一、登陆。 不管UDP还是TCP,最终登陆成功之后,QQ都会有一个TCP连接来保持在线状态。这个TCP连接的远程端口一般是80,采用UDP方式登陆的时候,端口是8000。因此,假如你所在的网络开放了80端口(80端口是最常用端口。。就是通常访问Web的端口,禁掉它的话,你的网络对你来说价值已经不大了),但没有屏蔽腾讯的服务器IP,恭喜你,你是可以登陆成功QQ的。 二、聊天消息通信。 采用UDP协议,通过服务器中转方式。因此,现在的IP侦探在你仅仅跟对方发送聊天消息的时候是无法获取到IP的。大家都知道,UDP协议是不可靠协议,它只管发送,不管对方是否收到的,但它的传输很高效。但是,作为聊天软件,怎么可以采用这样的不可靠方式来传输消息呢?于是,腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。之所以会发生在客户端明明看到“消息发送失败”但对方又收到了这个消息的情况,就是因为客户端发出的消息服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的。 三、文件/自定义表情传送。 大家都知道,QQ可以传送文件,可以发送自定义表情。先说官方表情。官方表情实际发送的是命令字,而没有发送表情。客户端收到命令字后,会自动解释为对应的表情。因此,QQ2008正式版的客户端发出的新版表情

基于UDP网络编程的服务器和客户端

风格不统一 提交于 2020-03-09 13:53:42
理解UDP UDP和TCP一样同属于TCP/IP协议栈的第二层,即传输层。 UDP套接字的特点 UDP的工作方式类似于传统的信件邮寄过程。寄信前应先在信封上填好寄信人和收信人的地址,之后贴上邮票放进邮筒即可。当然信件邮寄过程可能会发生丢失,我们也无法随时知晓对方是否已收到信件。也就是说信件是一种不可靠的传输方式,同样的,UDP所提供的也是一种不可靠的数据传输方式(以信件类比UDP只是通信形式上一致性,之前也以电话通信的方式类比了TCP的通信方式,而实际上从通信速度上来讲UDP通常是要快于TCP的;每次交换的数据量越大,TCP的传输速率就越接近于UDP)。因此,如果仅考虑可靠性,TCP显然由于UDP;但UDP在通信结构上较TCP更为简洁,通常性能也要优于TCP。 区分TCP和UDP最重要的标志是流控制,流控制赋予了TCP可靠性的特点,也说TCP的生命在于流控制。 UDP内部工作原理 与TCP不同,UDP不会进行流控制,其在数据通信中的作用如下图所示。可以看出,IP的作用就是让离开主机B的UDP数据包准确传递到主机A,而UDP则是把UDP包最终交给主机A的某一UDP套接字。UDP最重要的作用就是根据端口号将传输到主机的数据包交付给最终的UDP套接字。 数据包传输过程UDP和IP的作用 UDP的高效使用 TCP用于对可靠性要求较高的场景,比如要传输一个重要文件或是压缩包

TCP与UDP的区别究竟在哪

被刻印的时光 ゝ 提交于 2020-03-09 12:14:29
TCP的优点 : 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点 : 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。 UDP的优点 : 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点 : 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用。 比如HTTP、HTTPS、FTP等传输文件的协议,POP

网络协议UDP

南笙酒味 提交于 2020-03-09 11:41:29
tcp/ip协议介绍:计算机网络协议,不同类型不同厂家之间的终端进行沟通,规范协议 。 互联网协议族:为tcp/ip协议族 大概有上百种协议,其中tcp协议、ip协议使用的比较 多所以大家默认成为tcp/ip IP地址:网络地址(ip地址与子网掩码进行与运算获得)和主机地址 A类IP地址:由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0” (地址范围1.0.0.1-126.255.255.254) B类IP地址:由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是 “10”(128.1.0.1-191.255.255.254) C类IP地址:由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须 是“110”(范围192.0.1.1-223.255.255.254) ------------------------------socket介绍------------------------------ #定义:socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主 要不同是: #import socket:应用socket包 #socket.socket(Address Family,Type):创建一个套接字,返回socket的描述符 Address Family:可以选择 AF_INET(用于 Internet

基于UDP的服务器端和客户端

六眼飞鱼酱① 提交于 2020-03-08 20:55:13
UDP中的服务器端和客户端没有连接 UDP 不像 TCP,无需在连接状态下交换数据,因此基于 UDP 的服务器端和客户端也无需经过连接过程。也就是说,不必调用 listen() 和 accept() 函数。UDP 中只有创建套接字的过程和数据交换的过程。 UDP服务器端和客户端均只需1个套接字 TCP 中,套接字是一对一的关系。如要向 10 个客户端提供服务,那么除了负责监听的套接字外,还需要创建 10 套接字。但在 UDP 中,不管是服务器端还是客户端都只需要 1 个套接字。之前解释 UDP 原理的时候举了邮寄包裹的例子,负责邮寄包裹的快递公司可以比喻为 UDP 套接字,只要有 1 个快递公司,就可以通过它向任意地址邮寄包裹。同样,只需 1 个 UDP 套接字就可以向任意主机传送数据。 基于UDP的接收和发送函数 创建好 TCP 套接字后,传输数据时无需再添加地址信息,因为 TCP 套接字将保持与对方套接字的连接。换言之,TCP 套接字知道目标地址信息。但 UDP 套接字不会保持连接状态,每次传输数据都要添加目标地址信息,这相当于在邮寄包裹前填写收件人地址。 发送数据使用 sendto() 函数: ssize_t sendto(int sock, void *buf, size_t nbytes, int flags, struct sockaddr *to, socklen_t

java中TCP、UDP的简单网络编程

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-08 17:39:57
文章目录 一、有关网络编程概念 二、TCP网络编程 2.1 TCP网络编程的客户端 2.2 TCP网络编程的服务端 三、UDP网络编程 3.1 UDP发送端 3.2 UDP的接收方 一、有关网络编程概念 传输层实现端到端的通信,因此,每一个传输层连接有两个端点。那么,传输层连接的端点是什么呢?不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。传输层连接的端点叫做套接字(socket)。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即形如(主机IP地址:端口号)。例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字是(210.37.145.1:23)。 总之,套接字Socket=(IP地址:端口号)。 有关网络编程中的API: java.net包下的InetAddress类:此类表示互联网协议(IP)地址。 (1)InetAddress getLocalHost() 域名:www.baidu.com 因为IP地址的数字较长,不方便记忆。所以设计了域名,来与IP地址对应。 由域名解析器(DNS)来解析对应关系。InetAddress getByName(xx) 来获取主机名和ip地址 二、TCP网络编程 2.1 TCP网络编程的客户端 TCP网络编程的客户端: 1

速读原著-TCP/IP(采用UDP的路径MTU发现)

风格不统一 提交于 2020-03-07 05:18:42
第11章 UDP:用户数据报协议 11.8 采用UDP的路径MTU发现 下面对使用U D P的应用程序与路径 M T U发现机制之间的交互作用进行研究。看一看如果应用程序写了一个对于一些中间链路来说太长的数据报时会发生什么情况。 例子 由于我们所使用的支持路径 M T U发现机制的唯一系统就是Solaris 2.x,因此,将采用它作为源站发送一份6 5 0字节数据报经s l i p。由于s l i p主机位于M T U为2 9 6的S L I P链路后,因此,任何长于2 6 8字节(2 9 6-2 0-8)且“不分片”比特置为 1的U D P数据都会使b s d i路由器产生I C M P“不能分片”差错报文。图 11 - 1 3给出了拓扑结构和M T U。 可以用下面的命令行来产生 6 5 0字节U D P数据报,每两个U D P数据报之间的间隔是5秒: solaris % sock -u -i -n10 -w650 -p5 slip discard 图11 - 1 4是t c p d u m p的输出结果。在运行这个例子时,将b s d i设置成在I C M P“不能分片”差错中,不返回下一跳M T U信息。 在发送的第一个数据报中将 D F比特置1(第1行),其结果是从b s d i路由器发回我们可以猜测的结果(第 2行)。令人不解的是,发送一个 D F比特置1的数据报(第

TCP与UDP区别

帅比萌擦擦* 提交于 2020-03-06 12:52:15
TCP 为了方便开发网络应用程序,美国伯克利大学在Unix上实现的一种 应用程序 访问网络的通信协议Socket,Socket的出现使程序员可以很方便的访问TCP/IP; 使用TCP/IP 的套接字( Socket )进行通信: 服务器程序 将一个套接字绑定到一个特定的端口,并 通过此套接字等待和监听客户端到端口的连接请求; 客户端程序 根据服务器程序所在的主机名和端口 发出连接请求 。 以客户端向服务器端发送 11.jpg(下图) 为例: 客户端: import java.io.FileInputStream; import java.io.OutputStream; import java.net.Socket; public class Client { public static void main(String[] args) { try { //建立链接:指定server所在主机地址和对应的端口(绑定过程) Socket socket = new Socket("127.0.0.1", 9999); //使用IO技术将图片发送 OutputStream outputStream = socket.getOutputStream(); FileInputStream fileInputStream = new FileInputStream("D:\\11.jpg");

Linux环境中使用socket进行UDP和TCP多线程通信无法关闭socket

大城市里の小女人 提交于 2020-03-06 09:00:50
在Linux下,使用QT编程网络通信,为提高通信效率,使用原始socket进行网络编程,在QT线程中经常出现线程无法退出,原因来源于socket无法关闭。 线程处理如下: void communicationClass::run() { // 开启数据处理线程 #ifdef Q_OS_LINUX //配置服务器信息 bzero(&m_sServer_addr, sizeof(m_sServer_addr)); m_sServer_addr.sin_family = AF_INET; //设置为IPV4通信 m_sServer_addr.sin_addr.s_addr = htonl(INADDR_ANY); //设置目的ip m_sServer_addr.sin_addr.s_addr = inet_addr(m_strSendIP.toStdString().c_str()); //设置目的端口去链接服务器 m_sServer_addr.sin_port = htons(m_ui16Port); //配置本地信息 bzero(&m_sLocal_addr, sizeof(m_sLocal_addr)); m_sLocal_addr.sin_family = AF_INET; //设置为IPV4通信 //loc_addr.sin_addr.s_addr = htonl(INADDR