问题51:TCP协议是面向连接的,但TCP使用的IP协议却是无连接的。这两种协议都
有哪些主要的区别?
答:这个问题很重要,一定要弄清楚。
TCP是面向连接的,但TCP所使用的网络则可以是面向连接的(如X25网络),但也
可以是无连接的(如现在大量使用的IP网络)。选择无连接网络就使得整个的系统非常灵活,
当然也带来了一些问题。
下面是TCP和IP向上提供的功能和服务的比较。
TCP提供的
IP提供的
面向连接服务
无连接服务
字节流接口
IP数据报接口
有流量控制
无流量控制
有拥塞控制
无拥塞控制
保证可靠性:
不保证可靠性
无丢失
可能丢失
无重复
可能重复
按序交付
可能失序
显然,TCP提供的功能和服务要比IP所能提供的多得多。这是因为TCP使用了诸如确
认、窗口通知、计时器等机制,因而可以检测出有差错的报文、重复的报文和失序的报文。
问题52:从通信的起点和终点来比较,TCP和IP的不同点是什么?答:用下面的图就可说明。
进程A和进程B的通信是使用面向连接的TCP提供的可靠的传输。主机X和主机Y的通信是使用无连接的IP提供的不可靠的传输。请注意:对TCP来说,通信的起点和终点是运输层上面的两个套接字socket,而应用层的应用进程正是通过应用层和运输层之间的套接字来使用TCP提供的服务。TCP协议根据报文段首部中的端口号找到目的端口,将报文段交付给目的进程。请注意:套接字是由IP地址和端口号决定的,套接字也可称为“插口”。对IP来说,通信的起点和终点是连接在网络上的两个主机。IP协议根据数据报首部中的目的IP地址找到目的主机,将数据报交付给目的主机。
请注意可靠传输的范围和不可靠传输的范围是不同的。我们还应当注意的是:虽然在两个套接字之间的通信是面向连接的,但IP数据报在下面的网络中传输时是独立地选择路由,而不是沿着某一条固定的路径传输。然而在上面的端口看来,TCP报文段好像都是从一个虚拟的、可靠的通信管道中传输到对方的端口。
f问题53:端口port和套接字socket的区别是什么?答:从本书经常使用的套接字定义来看,套接字包含了端口,因为套接字IP地址,端口号。套接字是TCP连接的端点。套接字又称为“插口”。
但我们已经讲过,套接字socket有多种意思。当使用API时,套接字往往被看成是操作系统的一种抽象,这时,套接字和一个文件描述符是很相似的,并且是应用编程接口API的一部分。套接字由应用程序产生,并指明它将由客户还是服务器来使用。当应用进程创建一个r