持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情
网络编程概述
Java是Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。
Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在Java的本机安装系统里,由JVM进行控制。并且Java实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。
网络基础
●计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、 共享硬件、软件、数据信息等资源。
●网络编程的目的:直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯。
●网络编程中有两个主要的问题:
➢如何准确地定位网络上一台或多台主机;定位主机上的特定的应用 ➢找到主机后如何可靠高效地进行数据传输
网络通信要素概述
网络通信的两个要素
IP和端口号、网络通信协议(端口号:区分一个主机上的不同应用程序)
如何实现网络中的主机互相通信
IP和端口号
IP
- IP:唯一的标识 Internet 上的计算机(通信实体)
- 在Java中使用InetAddress类代表IP
- IP分类:IPv4 和 IPv6 ; 万维网 和 局域网
- 域名: www.baidu.com www.mi.com www.sina.com www.jd.com www.vip.com
- 本地回路地址:127.0.0.1 对应着:localhost
- 如何实例化InetAddress:两个方法:getByName(String host) 、 getLocalHost() 两个常用方法:getHostName() / getHostAddress()
- 端口号:正在计算机上运行的进程。要求:不同的进程有不同的端口号。 范围:被规定为一个 16 位的整数 0~65535。
- 端口号与IP地址的组合得出一个网络套接字:Socket
端口号
网络通信协议
计算机网络中实现通信必须有一些约定,即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
问题:网络协议太复杂
计算机网络通信涉及内容很多,比如指定源地址和目标地址,加密解密,压缩,解压缩,差错控制,流量控制,路由控制,如何实现如此复杂的网络协议呢?
通信协议分层的思想
在制定协议时,把复杂成份分解成一些简单的成份,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一 层可以调用下一层,而与再下一层不发生关系。各层互不影响,利于系统的开发和扩展。
数据传输的例子
TCP和UDP网络通信协议的对比
TCP/IP协议簇
●传输层协议中有两个非常重要的协议: ➢传输控制协议TCP(Transmission Control Protocol) ➢用户数据报协议UDP(User Datagram Protocol)。 ●TCP/IP以以两个主要协议:传输控制协议(TCP)和网络互联协议(IP)而得名,实际上是一组协议,包括多个具有不同功能且互为关联的协议。 ●IP(Internet Protocol)协议是网络层的主要协议,支持网间互连的数据通信。 ●TCP/IP协议模型从更实用的角度出发,形成了高效的四层体系结构,即物理链路层、IP层、传输层和应用层。
TCP和UDP
●TCP协议: ➢使用TCP协议前,须先建立TCP连接,形成传输数据通道 ➢传输前,采用“三次握手”方式,点对点通信,是可靠的 ➢TCP协议进行通信的两个应用进程:客户端、服务端。 ➢在连接中可进行大数据量的传输 ➢传输完毕,需释放已建立的连接,效率低 ●UDP协议: ➢将数据、源、目的封装成数据包,不需要建立连接 ➢每个数据报的大小限制在64K内 ➢发送不管对方是否准备好,接收方收到也不确认,故是不可靠的 ➢可以广播发送 ➢发送数据结束时无需释放资源,开销小,速度快
TCP生活案例:打电话 UDP生活案例:发短信,发电报,看直播视频
TCP三次握手
TCP四次挥手
客户端或服务器均可主动发起挥手动作,在socket编程中任何一方执行close0操作即可产生挥手操作。
客户端和服务端
客户端:1.可以自定义,比如QQ、微信;2.浏览器 服务端:1.可以自定义;2.Tomact服务器
浏览器访问Tomact服务器资源操作
安装好tomcat服务器后,在examples目录下放入文件,比如图片,然后打开命令行,运行 catalina run 命令,启动tomcat服务器,然后再在浏览器输入url(localhost:8080/examples/文件名),即可
UDP网络编程
URL网络编程
URL类
- 1.URL:统一资源定位符,对应着互联网的某一资源地址
- 2.格式