8、网络

web方向:少用

android:常用

一、网络通讯三要素:

1、IP:32位的二进制数据,切成4分,每份8位(192.168.1.1),0~255

2、端口:标识该消息给哪个应用程序处理的标识符,0~65535,

3、协议

IP地址

  IP地址=网络号+主机号(192.168.1 +1)

  IP地址分类:

   1、A类地址 = 一个网络号+三个主机号 2^24 政府单位

   2、B类地址 = 两个网络号+两个主机号 2^16 事业单位

  3、C类地址 = 三个网络号+一个主机号 2^8 私人

1、IP类 InetAddress

常用方法:

(1)返回主机的IP地址对象,静态方法,没有构造方法

getLocalHost();

(2)返回IP地址的字符串表示形式

getHostAddress();

(3)返回主机名

getHostName();

(4)根据主机名或者IP地址的字符串形式确定IP地址对象

getByName();

(5)返回IP地址的数组形式

getAllByName();

2、端口

范围:0~65535

0~1023:系统紧密绑定的服务

1024~65535:可以使用

3、协议:

(1)UDP:飞秋,游戏

(2)TCP

在Java中网络通信也称为Socket(套接字/插座),要求都安装了Socket,不同的协议就有不同的Socket

二、UDP通讯协议

1、特点

(1)将数据源及其目的封装为数据包,面向无连接

(2)数据包限制在64K

(3)不可靠

(4)速度快

(5)UDP不分服务端与客户端,只分发送端与接收端

UDP协议下的Socket:

(1)DatagramSocket:UDP插座服务,发送和接收数据包的套接字

(2)DatagramPacket:数据包类

DatagramPacket(buf, length, address, port);  // buf发送的内容;length发送数据内容大小;address发送目的IP地址对象;port端口号

2、发送端步骤

(1)建立UDP服务

(2)准备数据,把数据封装到数据包中,发送端要IP地址和端口号

(3)调用UDP发送数据

(4)关闭资源

3、接收端步骤

(1)建立UDP服务,监听端口

(2)准备空的数据包

(3)调用UDP服务接收数据

(4)关闭资源

每个程序都有自己处理的特定数据格式,接收到的数据不符合指定格式,那么就被丢弃

飞秋格式

版本号:时间:发送人:IP:发送标识符(32):真正内容

在UDP协议中有个IP地址为广播地址,主机号为255的地址

给广播IP地址发送消息时,同一网络段的主机都可以接收到消息

 1 // UDP发送端
 2 public static void sendUDPMsg() throws IOException {
 3     // 建立UDP服务
 4     DatagramSocket datagramSendSocket = new DatagramSocket();
 5     // 把数据封装到数据包中
 6     String data = "UDP测试数据";
 7     // 建立数据包
 8     DatagramPacket datagramPacket = new DatagramPacket(data.getBytes(), data.getBytes().length, InetAddress.getLocalHost(), 9090);
 9     // 调用UDP的服务发送数据包
10     datagramSendSocket.send(datagramPacket);
11     // 关闭资源
12     datagramSendSocket.close();
13 }
 1 public static void reveiveUDPMsg() throws IOException{
 2     // 建立UDP服务,监听端口
 3     DatagramSocket datagramReceiveSocket = new DatagramSocket(9090);
 4     // 建立新的数据包用于存放数据
 5     byte[] buf = new byte[1024];
 6     DatagramPacket datagramReceivePacket = new DatagramPacket(buf, buf.length);
 7     // 调用UDP服务接收数据存放在数据包的buf中
 8     datagramReceiveSocket.receive(datagramReceivePacket);
 9     System.out.println("接收到的数据:"+new String(buf, 0, datagramReceivePacket.getLength()));
10     // 关闭资源
11     datagramReceiveSocket.close();
12 }

 1 // 群聊接收端
 2 public class WeChatSender extends Thread{
 3
 4     @Override
 5     public void run() {
 6         // 不能直接抛出异常,Thread
 7         try {
 8             // 建立UDP服务
 9             DatagramSocket datagramSendSocket = new DatagramSocket();
10             // 准备数据,封装到数据包中,用BufferedReader封装可以逐行读取
11             BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
12             // 发送数据
13             String line = null;
14             DatagramPacket datagramSendPacket = null;
15             while((line = bufferedReader.readLine())!=null) {
16                 // 把数据封装到数据包中然后发送
17                 datagramSendPacket = new DatagramPacket(line.getBytes(), line.getBytes().length, InetAddress.getByName("192.168.1.255"), 9090);
18                 // 发送数据
19                 datagramSendSocket.send(datagramSendPacket);
20             }
21             // 关闭资源
22             datagramSendSocket.close();
23         } catch (IOException e) {
24             // TODO Auto-generated catch block
25             e.printStackTrace();
26         }
27     }
28 }
 1 // 群聊接收端
 2 public class WeChatReveiver extends Thread{
 3
 4     @Override
 5     public void run() {
 6         try {
 7             // 建立UDP服务,监听端口
 8             DatagramSocket datagramReveiveSocket = new DatagramSocket(9090);
 9             // 准备空的数据包存储数据
10             byte[] buf = new byte[1024];
11             DatagramPacket datagramReveivePacket = new DatagramPacket(buf, buf.length);
12             // 调用UDP接收数据
13             boolean flag = true;
14             while(flag) {
15                 datagramReveiveSocket.receive(datagramReveivePacket);
16                 System.out.println(datagramReveivePacket.getAddress().getHostAddress()+":"+new String(buf, 0, datagramReveivePacket.getLength()));
17             }
18             // 关闭资源
19             datagramReveiveSocket.close();  // 要是判断条件直接为true会永远执行不到
20         } catch (IOException e) {
21             // TODO Auto-generated catch block
22             e.printStackTrace();
23         }
24     }
25 }
时间: 2024-10-12 06:00:14

8、网络的相关文章

iOS开发——网络编程OC篇&Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要

网络攻防第一次作业(201421450010)

姓名:陈书扬 学号:201421450010 指导教师:高见 1.虚拟机安装与调试 安装windows和linux(kali)两个虚拟机,均采用NAT网络模式,查看主机与两个虚拟机器的IP地址,并确保其连通性.同时为两个虚拟机做一个快照 windows虚拟机 Linux虚拟机 本地主机win10 两台主机都ping通 2.Windows基本命令 dir显示目录   cd 进入目录 Arp -a -d -s arp缓存 net share 查看计算机IPC$共享资源 netstat -ano网络链

10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包

- 10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包 - 扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html  - tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html  # 10.6 监控io性能 ![mark](http://oqxf7c508.bkt.clouddn.com/b

Kali linux网络配置

Kali linux 安装完成后,需要对其网络进行配置.使用DHCP服务是配置网卡最简单的方法之一,但渗透测试时通常不会这样做,因为系统会被记录在DHCP服务器的数据库中. 1  动态DHCP方式 配置文件地址: /etc/network/interface # 启动系统激活设备 # Loop回环地址 auto lo iface lo inet loopback # 启动系统激活设备 # 网卡eth0设置为DHCP类型 auto eth0 iface eth0 inet dhcp 2  静态St

深度复数网络 Deep Complex Networks

转自:https://www.jiqizhixin.com/articles/7b1646c4-f9ae-4d5f-aa38-a6e5b42ec475  (如有版权问题,请联系本人) 目前绝大多数深度学习模型中的数学都是实数值的,近日,蒙特利尔大学.加拿大国家科学院-能源/材料/通信研究中心(INRS-EMT).微软 Maluuba.Element AI 的多名研究者(其中包括 CIFAR Senior Fellow Yoshua Bengio)在 arXiv 上发布了一篇 NIPS 2017(

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来. 阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接灵活的运用到自己的实际项目中去.

Android网络通讯简介

网络通信应该包含三部分的内容:发送方.接收方.协议栈.发送方和接收方是参与通信的主体,协议栈是发送方和接收方进行通信的契约.按照服务类型,网络通信可分为面向连接和无连接的方式.面向连接是在通信前建立通信链路,而通信结束后释放该链路.无连接的方式则不需要在通信前建立通信连接,这种方式不保证传输的质量. Android提供了多种网络通信的方式,如Java中提供的网络编程,在Android中都提供了支持.Android中常用的网络编程方式如下: 针对TCP/IP协议的Socket和ServerSock

openvpn实现分流,指定IP走VPN,其它走本地网络

最近研究了Openvpn好久.现在写一点心得出来. 客户需求:看香港某几个网站使用openvpn翻墙过去,其它所有访问不能用翻墙,要走本地. 系统环境: Centos x64位 6.8, 使用在线yum安装 一.服务器端配置 详细配置参考其它配置文档 [[email protected] openvpn]# rpm -qa | grep openvpn openvpn-2.3.11-1.el6.x86_64 生成ta.key文件,用于tls-auth认证. # openvpn --genkey

如何构建安全的网络连接机制

随着计算机网络与信息化的不断发展,DT时代数据资源的多样性.庞大性.分布广泛性,导致信息安全问题日趋复杂,计算机网络的开放框架所带来的威胁层出不穷.面对严峻的网络安全形势,传统的信息安全系统从架构和强度上已经难有大的突破.人们在信息安全的实践中逐渐认识到,大多数安全隐患来自于终端,如何解决这项问题,成为了各网络大咖们需要攻克的又一课题. 勤智数码产品方案部-秦杨凯给出了这个课题的解决方案-- 通过构建对等规格的网络安全协议和的信息资源管理体系的分布式网络,可快速提高数据资源自由流通.往来无碍.安

网络运维调查

我想在北京就业 通过百度我知道工作职位仅在北京地区网络运维的职位有2668个,朝阳区276个,东城33个,海淀258个,石景山15个,延庆2个,西城48个,昌平67个,丰台74个,怀柔4个,通州28个,密云3个,大兴57个,房山5个,门头沟3个,顺义18个.薪资方面,4001~6000元每个月的有793个,6001~8000元每个月的有1059个,8001~10000元每个月的有709个,10001~15000元每个月的有509个,15001~20000元每个月的有301个,20001~3000