IP:定义网络上的不同节点(手机,电脑,路由器。。)
IPV4:32位 IPV6:128位
目前主要用的都是IPV4
非注册IP公司(公司内部使用):192.168.0.0~192.168.255.255
特殊的IP:
127.0.0.1 本地IP
localhost 本机域名
DNS域名解析器
java.net 类 InetAddress 此类表示互联网协议(IP)地址。
static InetAddress getLocalHost() //返回本机主机。 vassar/192.168.11.230
static InetAddress getByName(String host) //在给定主机名的情况下确定主机IP的地址 host=vassar时,打印输出为 vassar/192.168.11.230
String getHostAddress() //返回IP地址字符串(以文本表现形式)
String getHostName() //获取此IP地址的主机名
端口:区分软件的
定义端口 2个字节 0~65535
相同的协议下端口不能冲突
端口自定义越大越好,8000以上,8000以内预留端口号
特殊的端口号:
80:http
8080:tomat
1521:Oracle 端口号
3306:mysql端口号
InetSocketAddress 此类实现IP套接字地址(IP+端口号)
InetSocketAddress(String hostname,int port) //根据主机名额端口号创建套接字地址
InetSocketAddress i=new InetSocketAddress("127.0.0.1",8888); 输出:/127.0.0.1:8888
InetAddress getAddress() 获取InetAddress
String getHostName() 获取hostname
int getPort(); 获取端口
URL:统一资源定位符|器,它是指向互联网“资源”的指针
互联网的三大基石:html、url、http
协议:http
域名:www.baidu.com
端口:80 默认80
资源:index.html?name=zhangsan&age=21#a
String getFile() 获取此url的文件名
String getHost() 获取此URL的主机名(如果适用)
String getPath() 获取此url的路径部分
int getPort() 获取此url的端口号
String getProtocol() 获取此url的协议名称
String getQuery() 获取此url的查询部分
String getRef() 获取此url的锚点(也称“引用”)
协议:规范 合同
UDP:非面向连接的 写信。 不安全,效率高,协议简单,开销小,大小有限制,一般不超过60k
TCP:面向连接的 打电话。安全,效率低开销大
3次握手:1、拨号 2、回返:响应 3、发送数据,基于IO穿出数据
应用层如何与传输层进行沟通?
通过Socket套接字
面向Socket编程,Socket相当于插座,是两层之间沟通的接口,不同协议,Socket的实现不一样
UDP如何实现Socket编程:发送端和接收端是平等的
DatagramSocket 此类表示用来发送和接收数据包的套接字
DatagramSocket(int port)
DatagramPacket 此类表示数据报包
UDP基本流程:发送端
1、创建发送端,指明发送端的端口
2、准备数据,转为字节数组
3、把数据打包,指明接收端的地址和端口号DatagramPacket
4、发送数据
5、关闭
UDP基本流程:接收端
1、创建接收端,指定接收端端口
2、准备字节数组,用来存储接口收据的
3、把字节数组打包
4、阻塞式接收
5、处理数据
6、关闭
TCP基本流程:客户端
1、创建客户端Socket指定服务端的IP和端口 Socket(String host,int port)
2、io操作
3、关闭
TCP基本流程:服务端
1、创建服务端 ServerSocket 指定端口 Serversocket(int port)
2、阻塞式接听 Socket accept()
3、一个客户端就是一个socket IO操作
4、关闭