java网络编程之Socket
1.什么是网络模型
网络模型的本质是两个设备之间的数据交换,再计算机网络中,设备主要指2个计算机,
现在的网络编程基本上都是基于请求/响应方式的,一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。
再网络编程中,发起连接请求的,被称为客户端(client),等待其他程序连接的程序被称为服务端(Server),客户端再需要使用的时候启动,服务端要一直启动
2.ip地址与域名
在网络中,需要一个设备的地址,就需要使用该设备的ip地址,现在的ip地址使用的是IPv4,由4个0-255之间的数字组成,在计算机中,ip地址是分配给网卡的,每个网卡有一个唯一的地址,如果一个计算机有多个网卡,
那这台机器有多个ip地址,再同一个网络内部,ip地址不能相同,ip地址不方便记忆,于是出现了域名,也就是给ip起了个名字,但是再网络中只能使用ip来进行传输,所以需要把域名转换为ip,这个就用到了
DNS服务器,所以可以使用ip来找到对应的计算机。
3.端口的概念
为了再一台设备可以运行多个设备,于是出现了端口,一台设备有65536个端口,每个端口对应一个唯一的程序,每个网络程序都对应一个或者多个端口,操作系统一般占用了0-1024之间的端口,所以我们编程使用的时候一般使用1024之后的端口,
网络编程就是使用IP地址,或域名,和端口连接到另一台计算机上对应的程序,按照规定的协议(数据格式)来交换数据,实际编程中建立连接和发送、接收数据在语言级已经实现,做的更多的工作是设计协议,以及编写生成和解析数据的代码罢了,然后把数据转换成逻辑的结构显示或控制逻辑即可。
4.什么是Socket
Socket就是为网络服务提供的一种机制,通讯的两端都有Socket网络通讯。之间通过IO传输
在网络中,Socket函数需要指定是ipv4还是ipv6,传输层需要指定tcp还是udp
基于tcp的Socket连接
基于udp的Socket连接
tcp和udp的区别
udp:
是面向无连接, 将数据及源的封装成数据包中,不需要建立建立连接,每个数据报的大小在限制64k内,因无连接,是不可靠协议,不需要建立连接,速度快。
tcp:
建议连接,形成传输数据的通道.,在连接中进行大数据量传输,以字节流方式,通过三次握手完成连接,是可靠协议,必须建立连接m效率会稍低。