17.3 基于TCP协议的网络编程 17.3.1 TCP协议基础

17.3 基于TCP协议的网络编程

TCP/IP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。Java对基于TCP协议的网络通信提供了良好的封装,Java使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信

17.3.1 TCP协议基础

IP协议

IP协议是nternet上使用的一个关键协议,它的全称是Internet Protocol,即**Internet协议**,通常简称IP协议。通过使用IP协议,从而使Internet成为一个允许连接不同类型的计算机和不同操作系统的网络。
要使两台计算机彼此能进行通信,必须使两台计算机使用同一种“语言”,IP协议只保证计算机能发送和接收分组数据。IP协议负责将消息从一个主机传送到另一个主机,消息在传送的过程中被分割成一个个的小包。

尽管计算机通过安装IP软件,保证了计算机之间可以发送和接收数据,但IP协议还不能解决数据分组在传输过程中可能出现的问题。因此,若要解决可能出现的问题,连上Internet的计算机还需要安装TCP协议来提供可靠并且无差错的通信服务。

TCP协议

TCP协议被称作一种端对端协议。这是因为它对两台计算机之间的连接起了重要作用,当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个用于发送和接收数据的虚拟链路.
TCP协议负责收集这些信息包,并将其按适当的次序放好传送,接收端收到后再将其正确地还原TCP协议保证了数据包在传送中准确无误。TCP协议使用重发机制:一当一个通信实体发送一个消息给另一个通信实体后,需要收到另一个通信实体的确认信息,如果没有收到另一个通信实体的确认信息,则会再次重发刚才发送的信息。
通过这种重发机制,TCP协议向应用程序提供了可靠的通信连接,使它能够自动适应网上的各种变化。即使在Internet暂时出现堵塞的情况下,TCP也能够保证通信的可靠性。
图17.4显示了TCP协议控制两个通信实体互相通信的示意图
这里有一张图片
综上所述,虽然P和TCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的。只有两者结合起来,才能保证Internet在复杂的环境下正常运行。凡是要连接到Internet的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称为TCP/IP协议。