看过谢希仁老师的《计算机网络》,但是当时编程能力弱,没有实践经验,现在遇到了关于网络连接方面的问题,还是有必要复习和梳理一些概念和过程。tcp协议存在于5层网络模型中的传输层,三次握手说的就是tcp。
看一下官方的描述:
TCP是Tranfer Control Protocol的简称,TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。
关于套接字的描述:
套接字(socket)是对TCP/IP协议的封装,是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
在java.net库中,有Socket类和DatagramSocket,分别使用了TCP协议和UDP协议通信,我们通常使用的就是TCP协议。发送一次socket请求(OutputStream),就会有一个回应(InputStream)。
参考博客: