网络编程
1、网络编程概述
2、网络通信要素概述
3、通信要素1:IP和端口号
4、通信要素2:网络协议
5、TCP网络编程
6、UDP网络编程
7、URL编程
1、网络编程概述
java是Internet上的语言,它从语言寄级上提供了对网络应用程序的支持,程序员能够很容易的开发常见的网络应用程序
java提供网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在java的本兮安装系统里,有JVM进行控制。并且java实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境
网络基础
计算机网络:
计算机网络是指将地理位置不同的具有独立功能的多台计算力及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
网络编程的目的:
直接或间接的通过网络协议与其他计算机实现数据交换,进行通讯。
网络编程中两个主要问题:
如何准确的定位网络上一台或多台主机;定位主机上特定的应用程序
找到主机后如何可靠高效的进行数据传输
2、网络通信要素概述
通信双方地址:
->IP :定位某一台主机
->端口号:定位某一个进程
一定的规则(即:网络通信协议;有两套参考模型)
OSI参考模型:模型过于理想化,未能在Internet网上进行广泛推广
TCP/IP参考模型(TCP/IP协议):事实上的国际标准
网络通信协议:
计算机网络中实现通信必须有一些约定,及通信协议,对速率,传输代码,代码结构,传输控制步骤,出错控制等制定标准。
HTTP协议:(超文本传输协议) 应用层
HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。
FTP协议:(文件传输协议)应用层
Telnet协议:(远程终端协议) 应用层
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
DNS协议:域名系统(DomainNameSystem)
DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的,DNS就是进行域名解析的服务器。DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。DNS是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库。
TCP(传输控制协议)传输层
UDP(用户数据报协议)传输层
Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的的事情。面向连接的是 TCP,该协议几乎做了所有的事情。
IP协议(网络之间互连的协议) 网络层
IP,全称互联网协议地址,是指IP地址,意思是分配给用户上网使用的网际协议(英语:InternetProtocol,IP)的设备的数字标签。常见的IP地址分为IPv4与IPv6两大类,但是也有其他不常用的小分类。
ICMP协议(Internet控制报文协议) 网络层
ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。
ARP(中国科学院资源规划项目)网络层
ARP项目是实现中国科学院科学的资源规划的信息系统工程,ARP即“中国科学院资源规划项目”(Academia Resource Planning,简称:ARP)。
Link 物理+数据链路层
在数据通信网中,按一种链路协议的技术要求连接两个或多个数据站的电信设施,称为数据链路,简称数据链。数据链路(data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
3、通信要素1:IP和端口号
IP地址:InetAddress
唯一的标识Internet上的计算机
本地环回地址(hostAddress):127.0.0.1 主机名(hostName):localhost
IP地址分类方式1:IPV4和IPV6
IPV4:由四个字节组成,4个0-255。大概52亿,30亿都在北美,亚洲4亿。2011年初已经用尽。一点分十进制表示,如192.168.0.1
IPV6:128位(16个字节),写成8个无符号整数,每个整数用4个16进制位表示,数字之间用冒号(:)分开,如:3ffe:3201:1401:1209:c8ff:fe4d:db39:1984
IP地址分类方式2:公网地址(万维网使用)和私有地址(局域网使用)
域名解析过程:
域名(www.baidu.com)-----> DNS解析成IP地址------->本地获得IP地址-------->网络服务器
域名(....)---->先找本机hosts,是否有输入的域名地址,没有的话,在通过DNS服务器找主机。
端口号
标识正在计算机上运行的进程(程序)
不同的进程有不同的端口号
被规定为一个16位的整数0-65535
端口分类:
公认端口:0~1023.被预先定义为服务通信占用(如:HTTP占用端口80,FTP占用端口21,Telnet占用端口23)
注册端口:1024~49151.分配给用户进程应用程序。(如Tomcat占用端口8080,MySQL占用端口3306,Oracle占用1521等)
动态私有端口:49152~65535
端口号与IP地址的组合得出一个网络套接字:Socket
4、通信要素2:网络协议
传输层中两个非常重要的协议
传输控制协议TCP
用户数据报协议UDP
TCP/IP以其两个主要协议:传输控制协议(TPC)和网络互联协议(IP)而得名,实际上是一组协议,包括多个具有不同功能且互为关联的协议
TCP协议:(三次握手)
1、使用TCP协议前,需先建立TCP连接,形成传输数据通道
2、传输前,采用“三次握手”方式,点对点通信,可靠的
3、TCP协议进行通信的两个应用进程:客户端、服务端
4、在连接中可以进行大数据量传输
5、传输完毕,需释放自己建立的连接,效率低
UDP协议:(四次挥手)
1、将数据、源、目的地封装成数据包,不需要建立连接
2、每个数据包的大小限制在64K内
3、发送不管对方是否准备好,接受方收到也不确认,不可靠
4、可以广播发送
5、发送数据结束是无序释放资源,开销小,速度快