前言:Java 是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。
Java 提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在
Java 的本机安装系统里,由 JVM 进行控制。并且 Java 实现了一个跨平台的
网络库, 程序员面对的是一个统一的网络编程环境
1.网络编程概述
计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成
一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共
享硬件、软件、数据信息等资源
网络编程的目的:直接或间接的通过网络协议与其他计算机实现数据交互,进行通讯
网络编程的三个问题:
- 问题1:如何精准的定位到每台电脑
- 问题2:如何精准的定位到主机上特定的应用(进程)
-问题3:找到主机后,如何进行可靠的数据传输
2.要素1:IP地址
使用具体的ip地址对应具体的一个互联网上的主机
IP分类:
角度一:IPv4(4个字节),IPv6(16个字节)
角度二:共有地址(万维网),私有地址(局域网)
IP地址对应指定的域名
-使用InetAddress来表示域名或者ip地址:
实洌化:getByName(String host),getLocalHost()
方法:
3.要素2:端口号
-用于区分主机上不同的进程
-----对应主机上的进程或应用,每个进程都有一个端口号
(注:只有运行的的才会叫做进程,或者就是一个程序)
端口号是特定的,但是可以给进程设置端口号,因为端口号冲突(冲突是指两个端口号相同的进程同时运行才会冲突,只运行一台时不会影响的)程序是无法运行的。
范围:
4.要素3:网络通信协议
这里有两套参考模型
• OSI 参考模型:模型过于理想化,未能在因特网上进行广泛推广
• TCP/IP 参考模型(或 TCP/IP 协议):事实上的国际标准。
--涉及到两种传输协议:TCO与UDP协议
TCP:可靠的协议,因为传输时需要双方建立连接(三次握手,四次挥手),然后才能进行大量的数据传输,效率低
涉及到的应用进程:客户端和服务端
TCP案列:打电话
UDP:不可靠的协议(又叫数据包或者数据报协议),不需要对方确认建立连接就可以发送信息
使用数据报传输(限制在64k以内)在进行网络编程客户端发送时是不需要指定端口号和ip地址的,但是需要在数据包里面指定(DatapramPacket类中)
涉及到的应用进程:接收端和发送端
UDP案列:发送短信,发电报
三次握手
第一次挥手:客户端向服务端发送TCP连接的请求
第二次挥手:服务端向客户端发送TCP连接请求的确认
第三次挥手:客户端向服务端发送TCP连接请求确认的确认
四次挥手
第一次挥手:客户端向服务器发送结束连接,让服务器做最后的准备工作。
此时,客户端处于半关闭状态,即表示不再向服务器发送数据了,但是还可以接受数据
第二次挥手:服务器接受到客户端释放连接的请求后,会将最后的数据发送给客户端,并告知上层应用进程不再接受数据
第三次挥手:服务器发送完数据后,会给客户端发送一个释放连接的报文。那么客户端接受后就直到可以正式释放连接了
第四次握手:客户端接收到服务器最后释放连接的报文后,要回复一个彻底断开的报文。
这样服务器收到后才会彻底释放连接。这里客户端,发送最后的报文后,会等待2MSL,因为有可能服务器没有收到最后的报文,那么服务器迟迟没有收到,就会再次给客户端发送释放连接的报文,此时客户端在等待时间范围内接收到,会重新发送最后的报文,并重新计时,如果等待2SML后没有收到,那么彻底断开。
5.TCP网络编程
6.UDP网络编程
7.URL编程
JAVA后台:将写好的Java程序部署在Tomact服务器上。启动Tomact服务器。
前台:使用浏览器进行访问,需要URL。(HTML+CSS+JS)
URL作用:定位互联网上某一资源的地址