网络编程
CS架构的特点:CS架构需要用户在自己电脑或手机上安装客户端软件,然后由客户端软件通过网络连接服务器程序,由服务器把数据发送给客户端,客户端可以在页面上看到数据。
BS架构特点:用户只需要通过浏览器输⼊网址就可以直接从服务器获取数
据,并由服务器将数据返回给浏览器,用户在网页上就可以看到各种数据了。
网络编程三要素:
1.P地址
表示设备在网络中的地址,是网络中设备的唯一标识,分为IPV4
和IPV6
。
IPV4
地址由32个比特位(4个字节)组成,将每8位看成一组,把每一组用十进制表示(叫做点分十进制表示法)。
IPV6
采用128位二进制数据来表示(16个字节),号称可以为地球上的每一粒沙子编一个IP
地址,
IPV6
比较长,为了方便阅读,每16位编成一组,每组采用十六进制数据表示,然后用冒号隔开(称为冒分十六进制表示法)。
2.端口号:应用程序在设备中唯一的标识
周知端⼝:0~1023,被预先定义的知名应⽤程序占⽤(如:HTTP占⽤80,FTP占⽤21)
注册端⼝:1024~49151,分配给⽤⼾经常或者某些应⽤程序
动态端⼝:49152~65536,之所以称为动态端⼝,是因为它⼀般不固定分配给某进程,⽽是动态分配的。
3.协议:连接和数据在网络中的传输规则
InetAddress类
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost);
ystem.out.println(InetAddress.getLocalHost());
//获取本机的IP,返回一个InetAddress对象
System.out.println(InetAddress.getAllByName("www.baidu.com"));
InetAddress byName = InetAddress.getByName("www.baidu.com");
//根据IP地址或域名,返回一个InetAddress对象
boolean reachable = byName.isReachable(2000);
//判断主机与对应的IP主机在对应时间内是否能联通
System.out.println(reachable);
String hostName = byName.getHostName();
//获取该ip地址对象对应的主机名
String hostAddress = byName.getHostAddress();
//获取该ip地址对象中的ip地址信息
UDP协议:⽤⼾数据报协议(User Datagram Protocol)。UDP协议是⼀个⾯向⽆连接的协议。传输数据时,不需要建⽴连接,不管对⽅端服务是否启动,直接将数据、数据源和⽬的地都封装在数据包中,直接发送。它是不可靠协议,因为⽆连接,所以传输速度快,但是容易丢失数据。
TCP协议:传输控制协议 (Transmission Control Protocol)。TCP协议是⾯向连接的通信协议,即传输数据之前,在发送端和接收端建⽴逻辑连接,然后再传输数据,它提供了两台计算机之间可靠⽆差错的数据传输。
三次握⼿:TCP协议中,在发送数据的准备阶段,客⼾端与服务器之间的三次交互,以保证连接的可靠。
第⼀次握手
,客⼾端向服务器端发出连接请求,等待服务器确认。
第二次握手
,服务器端向客⼾端回送⼀个响应,通知客⼾端收到了连接请求。
第三次握手
,客⼾端再次向服务器端发送确认信息,确认连接。
完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛,例如下载文件、浏览网页等。
SYN(Synchronize)标志是TCP(Transmission Control Protocol)中的一个标志位,用于建立TCP连接。在TCP三次握手中,SYN标志用于表示请求建立连接,它的作用如下:
-
客户端向服务器发送一个TCP数据包,其中SYN标志被设置为1,表示请求建立连接。 这是TCP连接建立的第一步。客户端选择一个初始的序列号(Sequence Number)并将其包含在SYN数据包中。
-
服务器收到客户端发送的SYN数据包后,会回应一个TCP数据包,其中SYN标志和ACK标志都被设置为1。 这是TCP连接建立的第二步。服务器也会选择一个初始的序列号,并将其包含在回应中。同时,服务器会确认收到客户端的SYN请求。
-
客户端收到服务器的响应后,会再次发送一个TCP数据包,其中ACK标志被设置为1。 这是TCP连接建立的第三步。客户端用于确认服务器已经收到了客户端的SYN请求,并且连接已经建立。
三次握手完成后,TCP连接就建立起来了,客户端和服务器可以开始在这个连接上传输数据。
SYN标志用于同步TCP连接的状态,确保双方都知道连接已经建立。在TCP中,SYN和ACK标志用于建立和确认连接,而FIN(Finish)标志用于关闭连接。这些标志位是TCP协议的一部分,用于控制连接的建立和终止。
特点:面向连接,可靠。