前言
在RPC的相关问题学习时提到了Socket(套接字),用于描述ip和端口,ip指向某个服务器,端口用于连接到某个应用程序,RPC是建立在Socket的基础上,在网络通讯的过程中,对于这个过程是如何来进行的这部分知识点非常模糊,本小节来对Socket来学习一下
📖学习原因
1 RPC框架的远程调用建立在Socket基础上,为理解RPC的原理打下基础
2 多线程的通讯基于Socket
3 基于socket可实现tomcat,对于学习tomcat也有一定帮助
4 gateway的Netty框架基于Socker
5 为理解分布式微服务架构的IO模型
Socket概念
Socket是对网络中不同主机上的应用进程之间进行双向通信的一种抽象,可以接受请求也可以发送请求,客户端发送请求,服务端接收请求
TCP/IP概念
TCP/IP是当前流行的网络传输协议框架,中文译为:传输控制协议/因特网互联协议
TCP协议是一种面向连接、确保数据在端到端间可靠传输的协议。面向连接是指在发送数据前,先建立一条虚拟的链路,然后让数据在这条链路上"流动"完成传输,TCP建立连接只有3次,而挥手断开需要四次
类似打电话原理?手机号可以当做是ip:端口??
TCP的三次握手,四次挥手
连接三次握手的主要目的:信息对等和防止超时,也是为了防止出现请求超时导致脏连接
其他协议:HTTP、HTTPS、FTP、SMTP、UDP(QQ空间漂流瓶案例)、ARR、PPP等
应用层协议:Http/ftp/smtp等
传输层协议:TCP/UDP
网络层:IP/ARP
链路层:IEEE802.x/PPP
Socket的原理
Java如何支持Socket
Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket(位于java.net包下),可以用服务器需要使用的端口号作为参数来创建服务器对象
ServerSocket serverSocket = new ServerSocket(9808); // 创建绑定到特定端口的服务器套接字
serverSocket.accept(); // 接受到此套接字的连接
serverSocket.close(); //关闭套接字
WebSocket的出现,使得浏览器具备了实时双向通信的能力.socket的调试可以通过Socket调试工具来进行
待续.......
评论区