IP、端口port、URL网址、协议UDP/TCP必备知识点梳理
IP: 定义网络上的不同节点(手机,电脑,路由器..)
IPv4:32位 IPV6:128位
非注册IP地址(公司内部使用): 192.168.0.0 ~ 192.168.255.255
特殊的IP:
127.0.0.1 本地IP
1ocalhost 本机域名
DNS域名解析器
java.net 类 InetAddress 此类表示互联网协议 (IP) 地址。
InetAddress address=InetAddress.getLocalHost();
address1.getHostAddress() 返回 IP 地址字符串(以文本表现形式)
address1.getHostName() 获取此 IP 地址的主机名
API 里 InetAddress类中提供类根据域名获取IP、根据IP获取域名的方法
端口是用来区分软件的一组数字:
对于端口有以**意点:
1.端口的定义占用两个字节0~65535
2.端口自定义越大越好,8000以上,8000以内预留端口号
3.特殊的端口号:
80: http
8080: tomcat
1521: Oracle端口号
3306: mysql端口号
API 的InetSocketAddress 类实现 IP 套接字地址(IP 地址 + 端口号)
URL: 统一资源定位符|器---->即我们通常说的网址
互联网的三大基石: html http url
http |
:// |
: |
80 |
/index.html?name=zhangsan&age=123#a |
协议:http 域名 端口:80 默认80 资源:index.html?
URL URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。
API 中URL类提供了获取各组成部分的方法
简单的网络爬虫原理
public class SpiderDemo04 {
public static void main(String[] args) throws IOException {
URL url=new URL("https://www.taobao.com");
InputStream is=url.openStream();
BufferedReader i=new BufferedReader(new InputStreamReader(is,"utf-8"));
String msg;
while((msg=i.readLine())!=null){
System.out.println(msg);
}
i.close();
is.close();
}
}
协议: 关键字(规范 、合同)
udp :非面向连接的 ,类似写信、寄快递,不安全,效率高,协议简单,开销小,大小有限制一般不超过60k
tcp :面向连接的 打电话 ,安全,效率低,开销大 (3次握手:1.拨号:客户端想服务器发送请求,此第一次握手 2.回访:服务器接到请求并处理后向客户端返回数据 3.发送数据 :建立Socket通道,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实现Socket编程:一个服务器,多个客户端
Socket类;
Socket(String host, int port)搭建通道
tcp基本流程:客户端
1.创建客户端 Socket 指定服务端的ip和端口
2.io操作
3.关闭
tcp基本流程:服务端
1.构建服务端 ServerSocket 指定端口 ServerSocket(int port)
2.阻塞式监听 Socket accept()
3.一个客户端就是一个socket IO操作
4.关闭