B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构,客户端不用安装软件,可以通过浏览器直接访问。常见有网页版淘宝,京东等,常见的浏览器有谷歌、火狐等。 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。
上图中,TCP/IP协议中的四层分别是应用层、传输层、网络层和链路层,每层分别负责不同的通信功能。 链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。 网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。 运输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。 应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。
通信的协议还是比较复杂的,java.net
包中包含的类和接口,它们提供低层次的通信细节。我们可以直接使用这些类和接口,来专注于网络程序开发,而不用考虑通信的细节。
java.net
包中提供了两种常见的网络协议的支持:
特点:数据被限制在64kb以内,超出这个范围就不能发送了。 数据报(Datagram):网络传输的基本单位。
完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛,例如下载文件、浏览网页等。
IP地址分类
a.b.c.d
的形式,例如192.168.65.100
。其中a、b、c、d都是0~255之间的十进制整数,那么最多可以表示42亿个。ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
,号称可以为全世界的每一粒沙子编上一个网址,这样就解决了网络地址资源数量不够的问题。常用命令
ipconfig
ping 空格 IP地址
ping 220.181.57.216
特殊的IP地址
127.0.0.1
、localhost
。网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如何区分这些进程呢? 如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。
利用协议
+IP地址
+端口号
三元组合,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其它进程进行交互。
端口号可分为3大类:
常见端口号:
端口号 | 用途 |
---|---|
21 | FTP服务器所开放的端口,用于上传、下载。 |
22 | SSH连接端口。 |
23 | Telnet(远程登录)协议代理服务器常用端口号 |
80 | HTTP网页服务的默认端口。 |
3306 | MySQL数据库的默认端口 |
6379 | Redis默认端口 |
8848 | Nacos默认端口 |
1521 | Oracle 数据库,默认的端口号。 |
443 | Hypertext Transfer Protocol Secure(HTTPS) 超文本传输安全协议,用于安全浏览网页。 |
25 | Simple Mail Transfer Protocol(SMTP) 简单邮件传输协议。 |
110 | POP3 |
2184 | zookeeper默认端口 |
53 | Domain Name System(DNS) 域名系统,域名解析。 |
8080 | Tomcat默认端口 |