1.1概述
-
网络编程
网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。
网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理,代码、开发工具、数据库、服务器架设和网页设计这5部分你都要接触。
-
计算机网络
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
-
网络编程的应用
无线电台:传播交流信息,数据交换,通信
-
想要达到这个效果需要什么
如何准确的定位网络上的一台主机:IP地址:端口号,定位到这个计算机上的某个资源
如何向找到的主机传输数据
-
与网页编程对比
网页编程:Javaweb、B/A架构
网络编程:TCP/IP、C/S架构
1.2 网络通信的要素
-
如何实现网络的通信
通信双方地址:
- ip
- 端口号
规则:网络通信的协议
-
TCP/IP参考模型(重点:传输层 ——TCP,UDP)
-
小结
网络编程中两个主要的问题
- 如何准确的定位到网络上的一台或者多台主机:DOS命令ping
- 找到主机之后如何通信
网络编程中的要素
- IP 和 端口号
- 网络通信协议:TCP,UDP
java万物皆对象
1.3 IP地址
-
ip地址:InetAddress
作用:唯一定义一台网络上的计算机
127.0.0.1:本机ip (localhost)
-
ip地址分类
IPV4:(127.0.0.1),4个字节组成,每个字节长度0~255;大概有42亿个,30亿都在北美,亚洲有4亿;2011年就用尽了;
IPV6:(2001:0bb2:aaaa:0015:0000:0000:1212:1414),128位,8个无符号整数
公网(互联网) - 私网(局域网 )
- ABCD类地址
- 192.168.xx.xx,(一般都是局域网):专门给组织内部使用的
-
域名:为了解决记忆IP问题
eg:www.baidu.com
-
测试输出IP
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 inetAddress4 = InetAddress.getByName("www.baidu.com"); System.out.println(inetAddress4); //常用方法 //System.out.println(inetAddress4.getAddress()); System.out.println(inetAddress4.getCanonicalHostName()); //规范的名字 System.out.println(inetAddress4.getHostAddress()); //ip System.out.println(inetAddress4.getHostName());//域名,或者自己电脑的名字 } catch (UnknownHostException e) { e.printStackTrace(); } } }
1.4 端口
-
端口表示计算机上的一个程序的进程
不同的进程有不同的端口号;用来区分软件
被规定范围0~65536
TCP端口,UDP端口各有65536个;单个协议下,端口号不能冲突,
-
端口分类
公有端口(0~1023):尽量不要占用,一般会被内置的进程或服务器使用
- HTTP默认端口:80
- HTTPS默认端口:43
- FTP:21
- Telent:23
程序注册端口:1014~49151,分给用户后者程序
- Tomcat:8080
- MySQL:3306
- Oracle:1521
动态、私有:49152~65535
-
常见DOS命令
netstat -ano :查看所有端口
netstat -ano|findstr “端口号” :查看指定的端口
tasklist|findstr “端口号” :查看指定端口的进程
-
测试输出IP:端口号
//测试输出IP:端口号 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()); //端口 } }
1.5 通信协议
-
协议:约定,就好比我们现在说的普通话
-
网络通信协议:速率,传输码率,代码结构,传输控制
-
大事化小:分层
-
TCP/IP协议簇:实际上是一组协议
TCP:用户传输协议
UDP:用户数据协议
IP:网络互连协议
-
TCP、 UDP 对比
TCP:打电话
-
连接,稳定
-
“三次握手”、“四次挥手”
最少需要三次,才能保证稳定连接 A:你愁啥?(发送端请求连接) B:瞅你咋地?(接收端作出回应) A:干一场!(发送端回应确定建立连接) A:我要走了 B:你真的要走了吗? B:你真的真的要走了吗? A:我真的要走了
-
客户端、服务端
-
传输完成,释放连接,效率低
-
接收端必须同意接收,才能连接
UDP:发短信
- 不连接,不稳定
- 客户端、服务端:没有明确的界限
- 接收端不管有没有准备好,发送端都可以发送
- DDOS(洪水攻击):发送大量垃圾包,造成端口堵塞(炮和攻击)
-