本章节主要讲解TCP的相关概念及使用
目录
1 网络编程的TCP基本概念
1.1 端口,协议介绍:
端口:设备上应用程序的唯一标识
端口号:
用两个字节表示的整数,它的取值范围是0~65535。其中,0~1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败
协议:计算机网络中,连接和通信的规则被称为网络通信协议
1.2 TCP三次握手和四次挥手流程图
1.3 TCP的三次握手 总结
TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠
第一次握手,客户端向服务器端发出连接请求,等待服务器确认
第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求
第三次握手,客户端再次向服务器端发送确认信息,确认连接
完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。
由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛。例如上传文件、下载文件、浏览网页等
四次挥手
总结:
三次握手是为了建立可靠的数据传输通道,四次挥手则是为了客户端与服务双方都处理完毕业务的情况下进行成功的断开连接
2 网络编程的TCP通讯实战
2.1 TCP通信程序-发送数据
Java中的TCP通信
Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。
Java为客户端提供了Socket类,为服务器端提供了ServerSocket类
2.2 ServerSocket 相关API
Socket(InetAddress address,int port) 创建流套接字并将其连接到指定IP指定端口号
Socket(String host, int port) 创建流套接字并将其连接到指定主机上的指定端口号
相关方法
InputStream getInputStream() 返回此套接字的输入流
OutputStream getOutputStream() 返回此套接字的输出流
2.3 案例演示
2.4 TCP通信程序-接收数据
相关API介绍
构造方法:ServletSocket(int port)
创建绑定到指定端口的服务器套接字
相关方法:Socket accept() 监听要连接到此的套接字并接受它
代码演示:
2.5 注意事项
1. accept方法是阻塞的,作用就是等待客户端连接
2. 客户端创建对象并连接服务器,此时是通过三次握手协议,保证跟服务器之间的连接
3. 针对客户端来讲,是往外写的,所以是输出流针对服务器来讲,是往里读的,所以是输入流
4. read方法也是阻塞的
5. 客户端在关流的时候,还多了一个往服务器写结束标记的动作
6. 最后一步断开连接,通过四次挥手协议保证连接终止
总结
TCP的核心概念就是三次握手跟四次挥手,大家能看明白即可扩展部分可以查阅官方文档
后续给大家介绍网络通讯更底层的知识