网络编程
1.1、概述
引入
信件的格式:对方邮编、对方地址、对方姓名、自己的地址
网络中包的格式:对方的信息、对方地址、自己的地址
网络中的两种连接方式(TCP,UDP)就类似于打电话和发短信:
打电话:连接、接通了、通话(通话结束前一直保持联系)
发短信:发送出去就完事了
计算机网络
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及**网络通信协议(类似于http、tcp、udp等)的管理和协调下,实现资源共享和信息传递**的计算机系统。
网络编程的目的
类似于无线电台:用以传播交流信息,数据交换,通信。
想达到效果需要什么
- 如何准确的定位网络上的一台主机 192.168.26.1(主机ip地址):8080(端口号),定位到计算机上的某个资源
- 找到了这个主机,如何传输数据呢?
1.2、网络通信的要素
如何实现网络的通信?
通信双方地址:
- ip
- 端口号
- 192.168.26.1:8080
规则:网络通信的协议
小结
- 网络编程中有两个主要的问题
- 如何准确的定位到网络上的一台或者多台主机
- 找到主机后如何进行通信
- 网络编程的要素
- IP和端口号
- 网络通信协议
- 万物皆对象(所以java中也有特定的类来进行网络编程)
1.3、IP
ip地址(网络互联协议地址):InetAddress
唯一定位一台网络上的计算机
ip地址的分类
ipv4/ipv6
IPV4 127.0.0.1,本机地址等于localhost,4个字节组成,0~255,42亿余个,2011年已经用尽
IPV6 128位,8个无符号整数
1
2021:0bb2:aaaa:0015:0000:1aaa:1312(仅举例)
公网(互联网) - 私网(局域网)
- ABCD类地址
- 192.168.xxx.xxx
域名:
- 用以将IP地址变得方便记忆:www.vip.com(唯品会的域名)
1 | import java.net.InetAddress; |
1.4、端口
端口表示计算机上的程序的进程
不同的进程有不同的端口号!用来区分软件!
端口被规定为 0~65535之中的数
端口号分为TCP,UDP两种:所以实际上是6553*2个端口,单个协议下,端口号不能冲突
端口分类
公有端口:0~1023
- HTTP:80
- HTTPS:443
- FTP:21
- Telent:23
程序注册端口:1024~49151,用以分配用户或者程序
- Tomcat:8080
- MySQL:2206
- Oracle:1521
动态、私有端口:45152~65535(尽量不要用)
1
2
3
4netstat -ano #查看所有的端口
netstat -ano |findstr "5353" #查看5353号端口
tasklist |findstr "8696" #查看8696端口的进程
Ctrl+shift+Esc 调用任务管理器查看进程
1.5、通信协议
协议:约定,就好比我们现在都说的是普通话。
网络通信协议:速率,传输速率。代码结构,传输控制……
问题:非常复杂
解决方法:大事化小,也就是进行分层
TCP/IP协议簇:实际上是一组协议
重要的协议:
出名的协议:
- TCP
- IP:网际互连协议,无连接、不可靠的、尽力而为
TCP与UDP比较:
TCP:打电话
面向连接,可靠
-
最少需要三次,保证稳定连接 A:你瞅啥 B:瞅你咋滴 A:干一场1
2
3
4
5
6
7
8
- ```
四次消息,保证双方都断开
A:我要走了
B:我知道了
B:我也要走了
A:我知道了
客户端,服务端(主动和被动)
传输完成,释放连接,效率低
UDP:发短信
- 无连接、不可靠、快速传输
- 客户端,服务端(没有明显的界限)
- 不管有没有接受,都可以发送





