网络通信的要素
通信双方的地址:
- ip
- 端口号
–>192.168.16.124 :5900
规则: 网络通信的协议 (http ,ftp , smtp , tcp ,udp ) TCP/IP参考模型
IP地址
Java中对应的类 :InetAddress
- 唯一定位一台网络上计算机
- 127.0.0.0.1 :本机localhost
- ip地址的分类:
Ipv4: 127.0.0.1, 由4个字节组成, 地址长度位32位 , 每个字节长度0~255 —>42亿个 30亿在北美,亚洲4亿,2019年用完
IPv6: 2001:0db8:85a3:0000:1319:8a2e:0370:7344 地址长度128位, 由8个无符号整数 : 0~9 + abcde 组成
补充: 位(bit): 数据存储的最小单位,每个二进制数字0或者1就是1个位 一共八组,每组4个数字,一共32个数,如果每个数字都是十六进制数,一个十六进制数可以写成4个二进制数(就是十六进制数转成二进制数) 可以理解为有多少位就是多少个二进制数 所以,32×4=128位
公网(给互联网使用的) -->相当于42亿 私网(局域网) 192.168.xx.xx 一般都是局域网,专门给组织内部使用的 ABCDE类地址 ———>ipv4地址,按范围划分(0~255)
域名:记忆IP www.baidu.com
端口 Port
端口表示计算机上的一个程序进程
- 不同进程由不同的端口号,用户来区分软件
- 被规定范围 0~65535
- 单个协议下,端口号不能冲突
端口分类: 1、 公有端口 : 0~1023 //尽量不要去占用 http:80 https:443 FTP :21 Telent(远程监听窗口) :23 …
2、程序注册端口 : 1024~49151 ,分配用户或程序 Tomcat :8080 MySQL :3306 Oracle : 1521
3、动态/私有端口 :49152~65535 //尽量不要去占用
命令行常中使用 netstat -ano //查看所有端口 netstat -ano|findstr “5900” //查看指定端口 tasklist|findstr “8696” //查看端口指定进程
通信协议
网络通信协议:速率,传输码率,代码结构,传输控制… 问题:非常复杂 —> 解决:分层
TCP/IP协议簇 (实际上是一组协议) IP:网络互联协议 TCP:用户传输协议 //类似于打电话,先建立连接再传递 UDP:用户数据报协议 //类似于发短信直接发,但对方不一定收到
TCP和UDP对比 TCP :
最少需要三次,保证连接稳定 A:你瞅啥 B:瞅你咋地 A:淦 最少四次断开 A:我下线了 B:你我知道你要下线了 B:你真的要下线了吗 A:我真的下线了
- 分为客户端和服务端去连接的
- 传输完成 ,释放连接 ,效率低
UDP:
- 不连接,不稳定
- 客户端和服务端没有明确界限
- 不管有没有准备好,都可以发给你 ---->导弹 , DDOS:洪水攻击(饱和攻击)
TCP和UDP的使用
常识补充: .bat --> windows执行 .sh --> linux执行
TCP实现聊天
客户端: 1、连接服务器Socket 2、发送消息
服务器: 1、建立服务器端口 ServerSocket 2、等待用户的连接 accept 3、接收用户消息
TCP文件上传的实现
UDP消息发送
虽然不需要连接,是否接受的到不确定,但必须有"活着的"才能能接受包裹,这是个前提,所要会有对应的发送端和接受端
UDP聊天的实现
补充:阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。 非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
循环发送消息
循环接收消息
UDP多线程在线咨询
双方既可以是发送方也可以是接收方 将代码与线程结合,每一方创建两个线程一个用来发送,一个用来接收
URL下载网络资源
https://www.baidu.com URL:统一资源定位符,定位互联网上的某一个资源
组成 协议://IP地址:端口(/项目名/资源)
URL下载网络资源
https://www.baidu.com URL:统一资源定位符,定位互联网上的某一个资源
组成 协议://IP地址:端口(/项目名/资源)
|