目录
基本的通信架构
CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端)
网络编程三要素:IP、端口、协议
- IP地址:设备在网络中的地址,是设备在网络中的唯一标识
- 端口:应用程序在设备中的唯一标识
- 协议:连接和数据在网络中传输的规则
IP
- 作用:唯一定位一台网络上的计算机
- 127.0.0.1代表本机localhost
- ip地址的父类:
- IPV4: 4个字节组成。,0~255, 42亿~;30亿都在北美,亚洲4亿。2011年就用尽。如127.0.0.1 。
- IPV6: 128位。8个无符号整数。如2406:da18:ddf:4000:67d5:b226:cad7:125b
- 公网(互联网)包括ABCD四类地址;
- 私网(局域网)包括如192.168.xx.xx,专门给组织内部使用的地址。
- 域名:是对于IP地址对的映射,解决IP地址难以记忆的问题
IP常用命令
ipconfig:查看本机IP地址
ping IP地址 :检查网络是否连接
端口
端口的作用是表示计算机上一个程序的进程。不同的进程有不同的端口号,用来区分软件。
端口号的范围被规定为0~65535。TCP,UDP两种不同的协议下可以使用同一端口;但是单个协议下,端口号不能一样。
端口分类:
- 公有端口:0~1023 内置的进程使用,如HTTP:80,FTP:21,TELENT:23
- 程序注册端口:1014-49151,分配给用户和程序,如Tomcat:8080,MySql:3306,Oracle:1521
- 动态、私有端口:49152~65535
协议
- 协议通俗来讲就是一种约定,就好比中国人交流说的是普通话。
- 网络通信协议规定了速率,传输码率,代码结构,传输控制等要素。
- 协议的规定问题非常的复杂,为了大事化小采用分层模型,如OSI模型和TCP/IP模型。
- TCP/IP协议簇:实际上是一组协议。其中比较重要的包含:TCP-用户传输协议和UDP-用户数据报协议;比较出名的协议包括TCP和IP-网络互联协议。
- TCP与UDP 对比:TCP:需要连接,稳定;连接经历三次握手,断开经历四次挥手;客户端、服务器分开;传输完成,释放连接,效率低。UDP:不需要不连接,不稳定;客户端与服务端没有明确的解现;发送方发送数据不管对方有没有准备好都会发送。
UDP通信
无连接、不可靠通信
不事先建立连接;发送端每次把要发送的数据、接收端IP、等信息封装成一个数据包,发出去就不管了。
java提供了一个java.net.DatagramSocket类来实现UDP通信
TCP通信
面向连接、可靠通信
要保证在不可靠的信道上实现可靠的数据传输
三次握手建立连接,传输数据进行确认、四次挥手断开连接
java.net.Socket类
- 先启动服务端,再启动客户端!!!!
客户端
- 连接服务器 Socket
- 发送消息
服务器端
- 建立服务的端口 ServerSocket
- 等待的用户的连接 accept
- 接收用户的消息
如何TCP实现服务端同时接收多个客户端的消息?
主线程定义了循环负责接收客户端Socket管道连接