网络编程
网络编程
一、概述

简单地说,计算机网络就是把一些计算机相互连接起来。实现资源共享和信息传递。
计算机网络的正式定义是这样的:
利用通信线路和通信设备,将地理位置不同的、功能独立的多台计算机互连起来,以功能完善的网络软件来实现资源共享和信息传递,就构成了计算机网络系统。
目的是:资源共享 和 信息传递。
QQ群里面放一个文件,群里的成员都能下载,就是资源共享;
你收到别人发的一条微信,就是信息传递。你和朋友通电话
信息传递类比邮件:

想要达到这个效果需要什么:
- 定位网络上的一台主机 192.168.16.124:端口, 定位上这个计算机上的某个资源。
- 如何传输数据呢?
Javaweb:网页编程 、 B/S架构。网络编程:TCP/IP 、 C/S
二、网络通信要素
如何实现网络的通信?
通信双方的地址:
- ip:192.168.16.124
- 端口:5900
规则:网络通信的协议:TCP/IP
TCP/IP参考模型是首先由ARPANET所使用的网络体系结构,共分为四层:网络接口层(又称链路层)、网络层(又称互联层)、传输层和应用层,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
每一层对应的协议有:
-
网络接口层协议:Ethernet 802.3、Token Ring 802.5、X.25、Frame relay、HDLC、PPP ATM等。
-
网络层协议:IP(Internet Protocol,英特网协议)、ICMP(Internet Control Message Protocol,控制报文协议)、ARP(Address Resolution Protocol,地址转换协议)、RARP(Reverse ARP,反向地址转换协议)。
-
传输层协议: TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram protocol,用户数据报协议)。
-
应用层协议:FTP(File Transfer Protocol,文件传输协议)、TELNET(用户远程登录服务协议)、DNS(Domain Name Service,是域名解析服务)、SMTP (Simple Mail Transfer Protocol,简单邮件传输协议 )、NFS(Network File System,网络文件系统)、HTTP、(Hypertext Transfer Protocol,超文本传输协议 )。

网络编程中有两个主要的问题:
- 如何让准确的定位到网络上的一台或多台主机;
- 找到主机之后如何通信;
网络编程中的要素:
- IP和端口号:IP
- 网络通信协议:UDP、TCP
三、IP
IP 地址:Internet Protocol Address
唯一定位一台网络上的计算机。127.0.0.1: 本机localhost
ip地址的分类
- IPV4: 127.0.0.1 ,4个字节组成。,0~255, 42亿~;30亿都在北美,亚洲4亿。2011年就用尽;
- IPV6: fe80::f0e0:7383:ad8e:f32f%3 ,128位。8个无符号整数
2406:da18:ddf:4000:67d5:b226:cad7:125b
公网(互联网)–私网(局域网)
-
ABCDE类地址
-
192.168.xx.xx, 专门给组织内部使用。
域名:记忆IP问题!例如 IP:www.vip.com
package com.gcbeen.net;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* @author gcbeen
*/
public class TestInetAddress {
public static void main(String[] args) {
try {
// 查询本机地址
InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress1);
InetAddress inetAddress2 = InetAddress.getByName("localhost");
System.out.println(inetAddress2);
InetAddress inetAddress3 = InetAddress.getLocalHost();
System.out.println(inetAddress3);
// 查询网站IP地址
InetAddress inetAddress = InetAddress.getByName("www.taobao.com");
System.out.println(inetAddress);
// 常用方法
// System.out.println(inetAddress.getAddress()); // 返回的是一个字节数组 无用
System.out.println(inetAddress.getCanonicalHostName()); // 规范的名字
System.out.println(inetAddress.getHostAddress()); // IP
System.out.println(inetAddress.getHostName()); // 域名,或者自己电脑的名字
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
// /127.0.0.1
// localhost/127.0.0.1
// xxxxx.local/192.168.0.102
//
// www.taobao.com/39.175.110.232
// 39.175.110.232
// 39.175.110.232
// www.taobao.com
四、端口
端口表示计算机上一个程序的进程。不同的进程有不同的端口号!用来区分软件!
单个协议下端口范围被规定0~65535,例如:TCP,UDP:65535*2个端口。 tcp:80 udp:80 单个协议下,端口号不能冲突
端口分类
- 端口 0~1023 内置的进程使用
- HTTP:80
- HTTP:443 如访问https://www.baidu.com:443 访问的还是百度
- FTP:21
- TELENT:23
- 程序注册端口:1024-49151,分配给用户和程序
- Tomcat:8080
- MySql:3306
- Oracle:1521
- 动态、私有端口:49152~65535
netstat -ano #查看所有的端口
netstat -nao|findstr "7808" #查看指定的端口
tasklist|findstr "8696"

package com.gcbeen.net;
import java.net.InetSocketAddress;
/**
* @author gcbeen
*/
public class TestInetSocketAddress {
public static void main(String[] args) {
InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1", 8080);
InetSocketAddress socketAddress2 = new InetSocketAddress("localhost", 8080);
System.out.println(socketAddress);
System.out.println(socketAddress2);
System.out.println(socketAddress.getAddress());
System.out.println(socketAddress.getHostName()); // 地址
System.out.println(socketAddress.getPort()); // 端口
}
}
// /127.0.0.1:8080
// localhost/127.0.0.1:8080
// /127.0.0.1
// localhost
// 8080

五、通信协议
协议:约定,就好比中国人交流说的是普通话
网络通信协议: 速率,传输码率,代码结构,传输控制…
问题:非常的复杂
大事化小:分层
TCP/IP协议簇:实际上是一组协议
共分为四层:网络接口层(又称链路层)、网络层(又称互联层)、传输层和应用层,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
每一层对应的协议有:
-
网络接口层协议:Ethernet 802.3、Token Ring 802.5、X.25、Frame relay、HDLC、PPP ATM等。
-
网络层协议:IP(Internet Protocol,英特网协议)、ICMP(Internet Control Message Protocol,控制报文协议)、ARP(Address Resolution Protocol,地址转换协议)、RARP(Reverse ARP,反向地址转换协议)。
-
传输层协议: TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram protocol,用户数据报协议)。
-
应用层协议:FTP(File Transfer Protocol,文件传输协议)、TELNET(用户远程登录服务协议)、DNS(Domain Name Service,是域名解析服务)、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)、NFS(Network File System,网络文件系统)、HTTP(Hypertext Transfer Protocol,超文本传输协议)。
重要的协议:TCP:用户传输协议、UDP:用户数据报协议
出名的协议:TCP:用户传输协议、IP:网络互联协议

TCP UDP 对比
TCP:打电话
-
连接,稳定
-
三次握手,四次挥手,保证稳定。
-
客户端、服务器
-
传输完成,释放连接,效率低
UDP:发短信
- 不连接,不稳定
- 客户端、服务端:没有明确的界线
- 不管有没有准备好,都可以发给你
- DDOS:洪水攻击! 发垃圾包 堵塞线路 (饱和攻击)

浙公网安备 33010602011771号