目录
一、网络基础
1.计算机网络
把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源
2.网络编程的目的
直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯
3.网络编程中有两个主要的问题
- 如何准确地定位网络上一台或多台主机;定位主机上的特定的应用
- 找到主机后如何可靠高效地进行数据传输
二、如何实现网络中的主机互相通信
1.通信双方地址
(对应问题一)
- IP
- 端口号:区分一个主机上的不同的应用程序
2.一定的规则(网络通信协议)
(对应问题二)
- OSI参考模型:将网络分为7层模型过于理想化,未能在因特网上进行广泛推广
- TCP/IP参考模型(或TCP/IP协议):事实上的国际标准
⚪数据传输举例
三、IP和端口号
(一)IP地址:InetAddress
1.作用
唯一的标识互联网(Internet)上的计算机
2.本地回环地址:hostAddress
127.0.0.1
对应着 主机名(hostName):localhost
3.分类
①分类方式1:IPV4和IPV6
IPV4:4个字节组成,4个0-255.大概42亿,30亿都在北美,亚洲4亿。2001年初已经用尽。以点分十进制表示,如192.168.0.1
IPV6:128位(16个字节),写成8个无符号整数,每个整数用4个十六进制位表示,数之间用:分开,如3ffe:3201:1401:1280:c8ff:fe4d:db39:1984
②分类方式2:公网地址(万维网使用)和私有地址(局域网使用)
192.168开头就是私有地址,范围即为192.168.0.0---192.168.255.255专门为组织机构内部使用
4.特点
不易记忆
5.在Java中使用InetAddress类代表IP
如何实例化InetAddress:
两个方法
- getByName(String host)
- getLocalHost()
两个常用方法
-
getHostAddress()
-
getHostName()
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressTest {
public static void main(String[] args) {
try {
//类似于File file = new File("hello.txt")
InetAddress inet1 = InetAddress.getByName("192.168.10.14");
System.out.println(inet1);
InetAddress inet2 = InetAddress.getByName("www.atguigu.com");
System.out.println(inet2);
//获取本机地址
InetAddress inet3 = InetAddress.getByName("127.0.0.1");
System.out.println(inet3);
InetAddress inet4 = InetAddress.getLocalHost();
System.out.println(inet4);
String hostAddress = inet2.getHostAddress();
String hostName = inet2.getHostName();
System.out.println(hostAddress); //获取地址
System.out.println(hostName); //获取域名
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
(二)域名
更形象,用户可以通过域名来访问具体的IP地址
www.baidu.com
www.mi.com
www.sina.com
1.DNS
域名解析服务器
2.过程演示
(三)端口号
1.概念
用来标识正在计算机上运行的进程
- 不同的进程有不同的端口号
- 被规定为一个16位的整数:0~65535
2.端口的分类
①公认端口
0~1023,被预先定义的服务通信占用
②注册端口
1024~49151,分配给用户进程或应用程序
③动态/私有端口
49152~65535
3.Socket
端口号与IP地址的组合得出一个网络套间字
四、网络通信协议
计算机网络中实现通信必须有一些约定,即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准
1.通信协议分层的思想
在制定协议时,把复杂成分分解成一些简单的成分,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与再下一层不发生关系。各层互不影响,利于系统的开发与扩展。
2.TCP/IP协议簇
①传输层协议中有两个非常重要的协议:
传输控制协议TCP(Transmission Control Protocol)
用户数据报协议UDP(User Datagram Protocol)。
●TCP/IP 以其两个主要协议:传输控制协议(TCP)和网络互联协议(IP)而得名,实际上是一组协议,包括多个具有不同功能且互为关联的协议。
●lP(Internet Protocol)协议是网络层的主要协议,支持网间互连的数据通信。
●TCP/IP协议模型从更实用的角度出发,形成了高效的四层体系结构,即物理链路层、IP层、传输层和应用层。
②TCP协议:
>使用TCP协议前,须先建立TCP连接,形成传输数据通道
>传输前,采用“三次握手”方式,点对点通信,是可靠的
客户端或服务器均可主动发起挥手动作
>TCP协议进行通信的两个应用进程:客户端、服务端。在连接中可进行大数据量的传输
>传输完毕,需释放已建立的连接,效率低
③UDP协议:
>将数据、源、目的封装成数据包,不需要建立连接
>每个数据报的大小限制在64K内
>发送不管对方是否准备好,接收方收到也不确认,故是不可靠的可以广播发送
>发送数据结束时无需释放资源,开销小,速度快