简述网络调研的作用_网络编程

7df79f6878d94e9d22d4090905cb934c.png

【017】

(1) 数据的传输模式有哪两种?

TCP和UDP传输

766aa7612451ee2b436e520188fb7442.png

(2) TCP和UDP协议的区别是什么?

TCP:一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议 。

UDP:一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务

1、是否面向连接

【1】TCP是面向连接的,即发送数据前需要与目标主机建立连接。

【2】UDP面向无连接的,发送数据前不需要建立连接。

2、是否可靠交付

【1】TCP在传输数据之前,需要三次握手来建立连接,并且通过数据校验、拥塞控制、重传控制、滑动窗口和确认应答等机制来实现可靠交付。数据传输过程中,数据无丢失,无重复,无乱序。

【2】UDP不提供可靠交付,只有通过检验和去丢弃那些不完整的报文,尽最大努力来保证交付的可靠性。

3、工作效率

【1】前面提到TCP传输数据的控制非常多,这也导致了TCP网络开销大,工作效率相对低下,对系统的资源要求也比较高。

【2】UDP传输控制简单,因此工作效率相对高,对系统资源的要求偏低。

4、实时性

【1】TCP传输数据的控制程序较多,大幅度降低了数据传输的实时性。

【2】UDP协议简单,数据实时性较高。

5、安全性

【1】TCP传输机制多,容易被利用,例如DOS、DDOS攻击,因此在安全性上,不如UDP。

【2】UDP没有TCP这么多机制,被利用的机会就会少很多,但UDP不是绝对安全,也会被攻击。

1. TCP协议数据传递细节

(1) TCP通信原理是什么?

服务器创建 ServerSocket,在指定端口监听并处理请求

客户端创建 Socket,向服务器发送请求

(2) 简述TCP通信的步骤?

服务器端: 客户端:创建Socket(String port)对象

1、创建ServerSocket(int port)对象 1、创建Socket对象

2、在Socket上监听客户端的连接请求 2、向服务器发送链接请求

3、阻塞、等待连接的建立 3、向服务器发送服务请求

4、接受并处理请求 4、接收服务结果

5、将处理结果返回给客户端 5、关闭流和Socket对象

6、关闭流和Socket对象

测试代码:

public class TestClient2 {

	/**
	 * 客户端单次通信
	 * 
	 * @param args
	 * @throws IOException
	 * @throws UnknownHostException
	 */
	public static void main(String[] args) throws UnknownHostException,
			IOException {
		// (1)创建Socket对象
		Socket client = new Socket("127.0.0.1", 9999);
		// (2)获取输出流
		DataOutputStream dos = new DataOutputStream(client.getOutputStream());
		dos.writeUTF("helloworld");
		// (3)获取输入流
		DataInputStream dis = new DataInputStream(client.getInputStream());
		System.out.println(dis.readUTF());
		// (4)关闭流
		if (dos != null) {
			dos.close();
		}
		if (dis != null) {
			dis.close();
		}
		if (client != null) {
			client.close();
		}
	}
}

public class TestServer2 {
	public static void main(String[] args) throws IOException {
		System.out.println("-------------服务器端已启动----------------");
		// (1)创建ServerSocket对象
		ServerSocket server = new ServerSocket(9999);
		// (2)监听是否有客户端来请求连接
		Socket client = server.accept();
		// (3) 获取输入流
		DataInputStream dis = new DataInputStream(client.getInputStream());
		System.out.println(dis.readUTF());
		// (4)获取输出流
		// "收到了"
		DataOutputStream dos = new DataOutputStream(client.getOutputStream());
		dos.writeUTF("收到了");
		// (5)关闭流,关闭Socket
		if (dos != null) {
			dos.close();
		}
		if (dis != null) {
			dis.close();
		}
		if (client != null) {
			client.close();
		}
	}
}

2. UDP协议数据传递细节

(1) 简述UDP协议的特点?

1、 不需要利用 IO 流实现数据的传输

2、每个数据发送单元被统一封装成数据包的方式,发送方将数据包发送到网络中,数据包在网络中去寻找他的目的地。

3、DatagramSocket:用于发送或接收数据包

4、DatagramPacket:数据包

(2) 请你举例生活中的哪些应用使用到了UDP?

TCP一般用于文件传输,打电话,发送接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用)等

UDP一般用于发短信,即时通信(QQ聊天 对数据准确性和丢包要求比较低,但速度必须快),在线视频网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等。

3. InetAddress类_InetSocketAddress类

(1) InetAddress类的作用及常用方法是什么?

封装计算机的 IP 地址,不包含端口号

常用方法:

1、String getHostAddress() 获得 IP 地址
2、String getHostName() 获得主机名
3、tatic InetAddress getByName(String host) 根据主机名获得 IP 地址

(2) InetSocketAddress类的作用及常用方法是什么?

此类用于实现 IP 套接字地址 (IP 地址+端口号),用于socket 通信

常用方法:

1、InetAddress getAddress() 获取 InetAddress 对象
2、int getPort() 获取端口号
3、String getHostName() 获取主机名

4. URL类_爬虫原理

(1) URL指的是什么?作用是什么?

URL即统一资源定位符,由 4 部分组成:协议 、存放资源的主机域名、端口号和资源文件名。

作用:URL 是指向互联网“资源”的指针,资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。

(2) URL的常用方法有哪些?

1、String getProtocal()  获取此 URL 的协议名称
2、String getHost()  获取此 URL 的主机名(如果适用)
3、int getPort()  获取 URL 的端口号
4、String getFile()  获取此 URL 的文件名
5、getDefaultPort()  获取与此 URL 关联协议的默认端口号
6、getPath()  获取此 URL 的路径部分

5. 基于TCP协议的Socket编程_双向通信_实现单次请求与响应

(1) 请你画出Soket编程实现一次双向通信的传输示意图?

e3f44a57c9bd6a17cf764c78ed386e4e.png

6. 基于TCP协议的Socket编程_双向通信_实现模拟用户登录

(1) 请你画出双向通信用户登录的示意图?

22b72f1df390fb62d0c57e278eb2cdac.png

7. 基于TCP协议的Socket编程_聊天室_客户端多线程

(1) 简述客户端与服务器端单次聊天的缺点?

单次聊天的缺点:只能客户端先发送数据,然后才能接收数据,如果不发就收不到,(接收和发送是在一个线程中实现的)不符合实际情况

(2) 单次聊天的缺点的解决方案是什么?

解决方案:(1)多次聊天可以使用循环来解决

(2)先发后收的问题可以使用线程来解决,一个接收数据的线程,一个发送数据的线程

9. UDP通信_DatagramSocket实现_客户咨询

(1) 简述UDP通信的原理?

应用层报文传输到运输层,使用UDP的话会加上UDP首部,到了IP层会加上IP首部。

UDP数据包包含(8字节UDP报文头、我们要发送的实际数据)

UDP报头包含(源端口、目的端口、数据包长度、校验) 每个部分都是2个字节。

IP数据报包含(20个字节的IP数据报头 、UDP数据包)

数据帧包含(帧头、IP数据包、帧尾)

UDP对应用层交下来的东西,既不合并,也不拆分,而是保留这些报文的边界。应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。在接受方的UDP,对IP层交上来的UDP用户数据报,在去除首部后就原封不动的交付给上层的应用进程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值