网络编程
1.计算机网络
2.网络编程
实现多台计算机之间实现数据的共享和传递,网络应用程序主要组成为:
网络编程+IO流+多线程
3.网络模型
两台计算机之间的通信是根据什么规则来走的(OSI & TCP/IP)
此处简单了解该模型就行《TCP/IP详解》《TCP协议簇》
4.网络编程三要素
网络通讯的模型:请求-响应,客户端-服务端
三要素:IP地址,端口,协议(数据传输的规则)
4.1 IP地址
IP地址:网络中计算机的唯一标识(IP地址是一个32位的二进制数据,为了方便,将一个字节的二进制转换为一个十进制的数据)
IP地址的组成:网络号段+主机段
A类IP地址:第一段号码为网络号码,剩下的三段号码为本地计算机的号码
----可以配置256256256台主机
B类IP地址:前二段号码为网络号码,剩下的二段号码为本地计算机的号码
C类IP地址:前三段号码为网络号码,剩下的一段号码为本地计算机的号码
补充:
A类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络屏蔽为:255.0.0.0;A类地址分配给规模特别大的网络使用。A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络。例如IBM公司的网络。
B类地址的表示范围为:128.0.0.0~191.255.255.255,默认网络屏蔽为:255.255.0.0;
C类地址的表示范围为:192.0.0.0~223.255.255.255,默认网络屏蔽为:255.255.255.0;C类地址分配给小型网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。
特殊地址:
127.0.0.1 回环地址,可用于测试本机的网络是否有问题. ping 127.0.0.1
DOS命令 ipconfig:查看本机IP地址
xxx.xxx.xxx.255 广播地址
访问百度(IP和域名–DNS服务器)
一个IP可以对应多个域名,但是一个域名在一个时刻只能对应一个IP
4.2.端口号
正在运行的程序的标识
1)A:每个网络程序都会至少有一个逻辑端口
2) B:用于标识进程的逻辑地址,不同进程的标识不同
3) C:有效端口:065535,其中01024系统使用或保留端口。
a)80
b)ftp:23
c)www.baidu.com:80
4)通过第三方工具可以查看
注意:端口与协议有关:TCP和UDP的端口互不相干,同一个协议的端口不能重复,不同协议的可以重复
TCP:10086
UDP:10086
4.3.协议
通信规则,就是数据的传输规则
TCP、UDP都是传输层的协议
TCP
建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低,例如:打电话
UDP
将数据源和目的封装到数据包中,不需要建立连接;每个数据报的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快:例如发短信
看看如何采用API来进行网络编程?IP 端口 协议
5.InetAddress类
用来表示主机的信息
getByName
public static InetAddress getByName(String host)
throws UnknownHostException
在给定主机名的情况下确定主机的 IP 地址。
主机名可以是机器名(如 “java.sun.com”),也可以是其 IP 地址的文本表示形式。如果提供字面值 IP 地址,则仅检查地址格式的有效性。
getLocalHost
public static InetAddress getLocalHost()
throws UnknownHostException
返回本地主机。
一个主机可以放多个个人网站
www.baidu.com/14.215.177.37
www.baidu.com/14.215.177.38
www.taobao.com/183.61.241.252
www.taobao.com/121.14.89.253
6.Socket
Scoket也叫套接字,其表示的是IP地址和端口号的组合。
网络编程主要就是指Socket编程,网络间的通信其实就是Socket间的通信,数据就通过IO流在两个Scoket间进行传递。
Socket
7.TCP编程
API:Socket,ServerSocket
客户端(发送一个请求) 服务端(接收到这个请求,给予响应)
8.TCP案例
任务:
1.基本操作
2.传递文件
3.一对一聊天
4.优化一对一聊天
9.TCP三次握手 和 四次挥手
10.UDP编程
1.简介
UDP(User Datagram Protocol)用户数据报包协议,UDP和TCP位于同一层-传输层,但它对于数据包的顺序错误或重发没有TCP可靠;UDP是一种面向无连接的通信协议。UDP向应用程序提供一种发送封装的原始IP数据报的方法,并且发送时无需建立连接,不保证可靠数据的传输
UDP — 发短信
TCP — 打电话
案例:
10.1.简单的UDP通信
10.2.可以一对一随便聊,而且读写分离
2.TCP VS UDP (学习后自行比对)
TCP UDP
是否连接 面向连接 无面向连接
传输可靠性 可靠 不可靠
应用场合 传输大量数据 少量数据
速度 慢 快
3.所需学习类
DatagramPacket —此类表示数据报包
DatagramSocket —此类用来发送和接受数据报包的套接字
SocketAddress getLocalSocketAddress() 返回此套接字绑定的端点的地 址,如果尚未绑定则返回 null。
Void send(DatagramPacket p) 从此套接字发送数据报包。
Void receive(DatagramPacket p) 从此套接字接收数据报包。
SocketAddress —抽象类,IP+端口号