udp

Android网络通信Socket使用

谁说我不能喝 提交于 2020-03-14 08:56:44
前一段时间做项目,涉及到TCP和UDP的使用,长期做单机的东西,一下跳到网络真的不适应,记录一下这些东西的入门级使用。 总体来说,TCP和UDP的使用流程分三步,只是TCP和UDP使用的类有所不同 图一 总体流程 具体使用的类在表一中列出,TCP是使用流传输,而UDP将数据打包发送。 TCP/IP UDP Socket Scoket DatagramSocket Outputstream DataOutputStream/PrintWirter DatagramPacket send Outputstrem.flush(); DatagramPacket.send 其中有些地方还是比较困惑的: DataOutputStream/PrintWirter有什么区别呢? 客户端-TCP使用方法 Socket socket = null; DataOutputStream out = null; //DataInputStream in = null; try { //Socket实例化 socket = new Socket(); //IP地址对象构造 InetAddress addr = Inet4Address.getByName(ip); //1)Socket链接服务器(指明端口和IP) socket.connect(new InetSocketAddress(addr, port

tcp与udp的区别

允我心安 提交于 2020-03-14 08:43:47
从功能上讲,tcp可靠udp不可靠。tcp保证数据包不重复,不乱序,不丢弃,而udp不保证,但会保证数据包内容正确性 从结构上讲,tcp使用ack+检验和还有序列号,保证数据包的正确送达以及数据包内容正确性,udp只使用了检验和将数据封装在udp报文中进行传输 从使用上讲,tcp用来做一些数据要求完整性高的文件传输,如电影,git代码提交。udp主要用于对数据完整性要求不高对文件传输,如直播,视频 从性能上说,有个说法是功能越多性能越差,因此udp性能优于tcp 从连接方式来讲,tcp需要连接,udp不需要连接,tcp只允许点对点连接,udp允许一对多,一对一连接 来源: oschina 链接: https://my.oschina.net/u/4478381/blog/3193651

UDP TCP 消息边界

可紊 提交于 2020-03-14 06:16:05
先明确一个问题,如果定义了一个数据结构,大小是,比方说 32 个字节,然后 UDP 客户端连续向服务端发了两个包。现在假设这两个包都已经到达了服务器,那么服务端调用 recvfrom 来接收数据,并且缓冲区开得远大于 64,例如,开了 1024 个字节,那么,服务端的 recvfrom 函数是会一次收到两个数据包呢,还是只能收到一个。 答案是只能收到一个。 来看代码: struct.h #ifndef STRUCT_H #define STRUCT_H typedef struct _UDP_MSG { int add1; int add2; int sum; char str1[16]; char str2[16]; char cat[32]; } UDP_MSG; #endif /* STRUCT_H */ 服务器的代码: #include <sys/types.h> #include <sys/socket.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include "struct.h" #define MAX_LINE 1024 #define SERV_PORT 8080 int udp_serv();

linux-7week

坚强是说给别人听的谎言 提交于 2020-03-14 00:37:35
1、osi七层模型和TCP/IP五层模型 应用层:为应用软件提供服务。 表示层;用于处理两个通信系统中交换信息的表示方式,主要有数据格式交换,数据加密数据解秘,数据压缩等。 会话层:维护两个计算机之间的传输链接,保证点到点传输不中断,以及管理数据交换等。 传输层:确保数据传输的可靠性,通过端口号来区分上层应用程序;传输的是数据段 --TCP UDP 网路层:数据传输, 数据包,逻辑地址/IP地址 --路由器 ;协议-IP ICMP IGMP ARP RARP 数据链路层:数据帧、MAC地址/物理地址, --交换机 物理层:二进制数据传输,比特流;--网卡 2、总结描述TCP三次握手四次挥手 TCP的三次握手: 在A机向B机发送数据交互时,建立SYN数据连接请求 ,数据包seq=x,发送给B机当B机收到数据后会回复给A机,同样也会发送SYN数据建立报文,B机给A机的数据包为seq=y,同样也要回复给A机的确认报文ACK=x+1,表明此数据我以收到,当A机再次收到B机确认的数据后,回复确认报文ACK=y+1,同样也会封装自己的数据包x+1告诉B机可以进行数据交互。 TCP的四次断开: 在A机向B机请求断开连接时,会发送FIN断开连接请求,封装一个数据包seq=x,发送给B,当B机收到A记得断开请求数据时,同样也会回复给A机ack确认报文数据包会表示为seq=x+1

linux-7week

末鹿安然 提交于 2020-03-14 00:32:45
1、osi七层模型和TCP/IP五层模型 应用层:为应用软件提供服务。 表示层;用于处理两个通信系统中交换信息的表示方式,主要有数据格式交换,数据加密数据解秘,数据压缩等。 会话层:维护两个计算机之间的传输链接,保证点到点传输不中断,以及管理数据交换等。 传输层:确保数据传输的可靠性,通过端口号来区分上层应用程序;传输的是数据段 --TCP UDP 网路层:数据传输, 数据包,逻辑地址/IP地址 --路由器 ;协议-IP ICMP IGMP ARP RARP 数据链路层:数据帧、MAC地址/物理地址, --交换机 物理层:二进制数据传输,比特流;--网卡 2、总结描述TCP三次握手四次挥手 TCP的三次握手: 在A机向B机发送数据交互时,建立SYN数据连接请求 ,数据包seq=x,发送给B机当B机收到数据后会回复给A机,同样也会发送SYN数据建立报文,B机给A机的数据包为seq=y,同样也要回复给A机的确认报文ACK=x+1,表明此数据我以收到,当A机再次收到B机确认的数据后,回复确认报文ACK=y+1,同样也会封装自己的数据包x+1告诉B机可以进行数据交互。 TCP的四次断开: 在A机向B机请求断开连接时,会发送FIN断开连接请求,封装一个数据包seq=x,发送给B,当B机收到A记得断开请求数据时,同样也会回复给A机ack确认报文数据包会表示为seq=x+1

UDP的最大报文长度

瘦欲@ 提交于 2020-03-12 16:33:40
以太网UDP最大报文长度 2014年01月22日 22:47:28 奚华 阅读数 12097 对于以太网环境下UDP传输中的数据包长度问题   首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。   其中以太网(Ethernet)的数据帧在链路层   IP包在网络层   TCP或UDP包在传输层   TCP或UDP中的数据(Data)在应用层   它们的关系是 数据帧{IP包{TCP或UDP包{Data}}}   在应用程序中我们用到的Data的长度最大是多少,直接取决于底层的限制。   我们从下到上分析一下:   在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)-(1500+18),其中的18是数据帧的头和尾,也就是说数据帧的内容最大为1500,即MTU(Maximum Transmission Unit)为1500;   在网络层,因为IP包的首部要占用20字节,所以这的MTU为1500-20=1480;   在传输层,对于UDP包的首部要占用8字节,所以这的MTU为1480-8=1472;   所以,在应用层,你的Data最大长度为1472。   (当我们的UDP包中的数据多于MTU(1472)时,发送方的IP层需要分片fragmentation进行传输,而在接收方IP层则需要进行数据报重组,由于UDP是不可靠的传输协议

go语言实现udp客户端/服务端

时光怂恿深爱的人放手 提交于 2020-03-12 16:32:55
/ server.go / package main import ( "fmt" "net" "os" ) func checkError(err error) { if err != nil { fmt.Println("Error: %s", err.Error()) os.Exit(1) } } func recvUDPMsg(conn *net.UDPConn) { var buf [20]byte n, raddr, err := conn.ReadFromUDP(buf[0:]) if err != nil { return } fmt.Println("msg is ", string(buf[0:n])) //WriteToUDP //func (c *UDPConn) WriteToUDP(b []byte, addr *UDPAddr) (int, error) _, err = conn.WriteToUDP([]byte("nice to see u"), raddr) checkError(err) } func main() { udp_addr, err := net.ResolveUDPAddr("udp", ":9098") checkError(err) conn, err := net.ListenUDP("udp", udp_addr)

TCP UDP面试题

早过忘川 提交于 2020-03-12 13:42:35
1.TCP/IP四层模型 # 1.网络接口层(物理层,数据链路层) # 2.网络层 # 3.传输层 # 4.应用层(会话层,表示层,应用层) 2.TCP与UDP区别 # TCP:面向连接,可靠的,速度慢,效率低 # UDP:无连接,不可靠,速度快,效率低 3.TCP/UDP应用 # TCP对通信质量有要求的,例如HTTP,HTTPS协议 # UDP不需要一对一沟通,建立连接的,可以做到一对多,如广播,直播需要处理速度快的,能容忍丢包的 4.三次握手四次挥手 # 三次握手# 1.客户端发送一个带SYN标志的TCP报文到服务器端,并进入SYN_SEND状态,等待服务端确认 # 2.服务端收到客户端的报文并返回一个同时带ACK标志和SYN报纸的报文,进入SYN_RECV状态。表示确认刚才客户端的报文,同时询问客户端是否准备好通讯 # 3.客户端再次回应服务端一个ACK报文,双方进入ESTABILISHED状态 # 四次挥手 # 1.TCP客户端发送一个FIN,用来关闭客户端到服务端的数据传送 # 2.服务端收到这个FIN,它发挥一个ACK,确认序号为收到的序号加一 # 3.服务端关闭客户端的连接,发送一个FIN给客户端 # 4.客户端发回ACK报文确认,并将确认序号设置为收到序号加一 5.为什么连接的时候是三次握手,关闭的时候是四次挥手? # 因为服务端收到客户端的SYN连接请求报文后

7.传输层协议:TCP/UDP

六月ゝ 毕业季﹏ 提交于 2020-03-11 01:08:51
7.传输层协议:TCP/UDP 前言 传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输 控制 协议TCP和用户数据包协议UDP; TCP/UDP工作原理、报文格式、应用场景 面向连接: 建立连接前先发数据包 面向无连接: 不用建立连接,就是打电话和发短信的区别; TCP 面向连接的传输层协议,可提供可靠的传输服务 转存失败 重新上传 取消 TCP端口号 端口号区分不同的网络服务 端口分类 0-1023 固定端口 0-65535 动态端口 23 telnet 22 ssl 20/21 FTP 80 HTTP 超文本传输协议 52 DNS 3389 远程桌面 转存失败 重新上传 取消 转存失败 重新上传 取消 TCP头部 源端口号、目的端口号 序列号、确认序列号(TCP特点:可靠) 头部长度(20-60字节)、保留、六个标志(指针是否有效、确认序列号、为1立刻读取走、要求重新建立连接、请求建立连接、控制对端关闭)、窗口--控制流量大小; SYN:初始化请求 ACK:确认 FIN:结束请求 window:窗口,防止拥塞 校验和、可选字段(通常没用) 转存失败 重新上传 取消 转存失败 重新上传 取消 TCP建立连接的过程 三次握手四次断开,序列号+1回复 转存失败 重新上传 取消 TCP建立连接的过程 转存失败 重新上传 取消 TCP流量的控制 滑动窗口

nslookup、arp、netstat、traceroute

做~自己de王妃 提交于 2020-03-10 07:22:01
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