一、 网络编程中有两个主要的问题:
1.如何准确地定位网络上一台或多台主机;定位主机上的特定的应用(分别对应2.1);
2.找到主机后如何可推高效地进行数据传输(分别对应2.2);
二、网络编程中的两个要素:
1.IP和端口号;
2.提供网络通信协议:TCP/IP参考模型(应用层、传输层、网络层、物理+数据链路层)
三、通信要素一:IP和端口号
- IP:
1.IP:唯一的标识Internet. 上的计算机(通信实体);
2.在Java 中使用InetAddress类代表IP;
3.IP分类: IPv4(4个字节组成,4个0-255,点分十进制表示)和IPv6(16字节,8个无符号整数,每个整数用冒号分开:四个十六进制位表示);万维网和局域网;
4.域名:www.baidu.com; www.sina.com;
5.本地回路地址:127.0.0.1,对应:localhost;
6.如何实例化InetAddress类?
getByName(String host); getLocalHost();
InetAddress类的2个常用方法:getHostName() / getHostAddress();
7.Internet 上的主机有两种方式表示地址:
a. 域名(hostName): www.atguigu.com
b. IP地址(hostAddress): 202. 108.35.210
①InetAddress类主要表示IP地址,InetAddress类的一个对象就代表一个具体的IP地址,有两个子类: Inet4Address、 Inet6Address
②InetAddress类对象含有一个Internet 主机地址的域名和IP地址:www.baidu.com; 和 14.215.177.39。
域名解析:域名容易记忆,当在连接网将时输入-一个主机的域名后,域名服务器(DNS)负责将域名转化成IP地址,这样才能和主机建立连接。
输入网址www.baidu.com,
先通过本机hosts(C:\Windows\System32\drivers\etc\hosts)寻找是否有输入域名地址:
如果没有,通过DNS域名解析服务器解析出ip地址:14.215.177.39,再通过解析出的ip地址访问到服务器:
- 端口号:
1.端口号标识正在计算机上运行的进程(程序) ,不同的进程有不同的端口号;被规定为一个16位的整数0~65535。
2.端口分类:
a. 公认端口: 0~1023。 被预先定义的服务通信占用(如: HTTP占用端口
80,FTP 占用端口21,Telnet占用端口23);
b. 注册端口: 1024~49151。 分配给用户进程或应用程序。( 如: Tomcat占
用端口8080,MySQL占用端口3306,Oracle占用端口1521等) 。
c. 动态/私有端口: 49152~65535。
3.端口号与IP地址的组合得出- 一个网络套接字: Socket。
四、网络通信要素二:网络通信协议
TCP/IP协议簇:
1.传输层协议中有两个非常重要的协议:.
a. 传输控制协议TCP(Transmission Control Protocol)
b. 用户数据报协议UDP(User Datagram Protocol)。
2.TCP/IP以其两个主要协议:传输控制协议(TCP)和网络互联协议(IP)而得
名,实际上是一组协议,包括多个具有不同功能且互为关联的协议。
3.IP(Internet Protocol)协议是网络层的主要协议,支持网间互连的数据通信。
4.TCP/IP协议模型从更实用的角度出发,形成了高效的四层体系结构,即
物理链路层、IP层、传输层和应用层。
TCP和UDP
-
TCP协议:
1.使用TCP协议前,须先建立TCP连接,形成传输数据通道;
2.传输前,采用“三次握手”方式,点对点通信,是可靠的;
3.TCP协议进行通信的两个应用进程:客户端、服务端;
4.在连接中可进行大数据量的传输;
5.传输完毕,需释放已建立的连接,效率低。 -
UDP协议:
1.将数据、源、目的封装成数据包,不需要建立连接;
2.每个数据报的大小限制在64K内;
3.发送不管对方是否准备好,接收方收到也不确认,故是不可靠的;
4.可以广播发送;
5.发送数据结束时无需释放资源,开销小,速度快。
tips:
1.一个IP对应着InetAddress类的一个对象;
2.实例化InetAddress类的两种方式:
a. InetAddress.getByName(String host);
b. InetAddress.getLocalHost();//获取本地ip
3.两个常用方法:
a. getHostName();
b. getHostAddress();