Java网络编程之SOCKET

    xiaoxiao2022-07-07  180

    什么是网络编程

    网络编程的本质是两个设备之间的数据交换

    使用IP地址,或域名,和端口连接到另一台计算机上对应的程序,按照规定的协议(数据格式)来交换数据。

    Socket分为2种协议 TCP  面向连接 通过三次握手、四次挥手完成连接,是可靠协议 在连接中进行大数据量传输,以字节流方式 安全,效率低,对方必须进行3次握手才可以通讯   应用场景: http、rpc UDP  面向无连接 不需要建立建立连接 将数据及源的封装成数据包中,每个数据报的大小在限制64k内 不安全,效率高    网络模型图      TCP 三次握手       在TCP/IP协议中,TCP协议采用三次握手建立一个连接。 如下图:    

    第一次握手:客户端会向服务器端发送码为syn=1,随机产生一个seq_number=x的数据包到服务器端 (syn) 第二次握手:服务端接受到客户端请求,确认ack=x+1, 于是向客户端发送syn(服务端独立生成 随机生成数字Y)+ack 第三次握手:客户端接受syn+ack,向服务器端发送ack=y+1,此包发送完毕即可 建立tcp连接。    完成三次握手,客户端与服务器开始传送数据。

     

    TCP  ​​​四次挥手       

    第一次挥手   客户端向服务端发送一个释放连接请求; 第二次挥手   服务端接受到释放通知之后,进入等待关闭状态,会将还未传输完毕的数据继续传输; 第三次挥手   服务器端所有的数据发送完毕之后,就告诉客户端说现在可以释放连接了。 第四次挥手   客户端确认是最终释放连接通知;

    服务器只要收到了客户端发出的确认,立即进入CLOSED状态。

    最新回复(0)