1.直观地,端到端通信是计算机之间的通信,点到点通信是相邻结点(包括端点的计算机和中间结点的交换机、路由器等)之间的通信。端到端通信位于运输层,点到点通信位于数据链路层。端到端通信比点到点通信复杂得多。点到点通信的两点之间是一条直连的传输媒介(可能有中继器),时延基本固定,帧可能丢失,但不会乱序到达。端到端通信的两个端点之间是各种各样的网络,时延变化很大,分组不但会丢失,还会失序到达。因此,在差错控制和流量控制方面,端到端通信都比较复杂,而且还要考虑拥塞控制。而点到点通信是不存在拥塞控制问题的。
2.不相同。当接收到的顺序为1、3、2、4时,接收端产生的确认将是ACK1、ACK1、ACK3、ACK4,产生了一个重复确认。当接收的顺序为1、3、4、2时,接收端产生的确认将是ACK1、ACK1、ACK1、ACK4,产生了两个重复确认。
3.三次握手完成两个重要功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行同步,这个序列号在握手过程中被发送与确认。现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机A和B之间的通信。假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号用于A到B的通信,也不知道A是否同意B所建议的用于B到A通信的初始序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待接收连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。
4.最简单的方式是使用UDP报文来实现该功能。可以自己定义一个自己的端口号,当小工具启动时,它会将主机的信息包括主机名、IP地址等放在UDP报文中,在局域网内进行广播。当同样开启该工具的其他主机收到该端口号的UDP包时,提取出主机名和IP信息,添加到用户能够看到的列表中。同时向发送方返回一个UDP报文确认,其中包含有自己的主机名和IP信息。当发送方收到该确认报文后,则将该主机添加到自己的列表中。这样就实现了类似的功能,其实,不知不觉间所做的,已经是在设计一个小的应用层协议了。
5.因为可能出现死锁现象,TCP使用了坚持定时器,当接收到0通告的确认后,发送方启动坚持定时器(窗口计时器)。当定时器设定的时间超时,发送方会发送一个探测报文段。接收方对探测报文的响应包含了通告窗口的通告值,若通告值不为0,则发送方调整发送窗口进行发送;若通告值仍为0,则重新启动坚持定时器,重复上述过程。
6.必须考虑到TCP报文段要封装到IP数据报中传送,而IP数据报的总长度最大为65535字节,IP首部最短为20字节,而TCP首部最短的情况下,也为20字节。因此一个TCP报文数据部分最长只能为65495字节。
7.首先,使每一方都确认对方存在,知道对方已准备就绪。接着,双方确认了初始传输序号,确定了双方发送数据流的起始序号。再者,双方还可以协商一些其他通信参数,如通信窗口大小、最大报文长度(MSS)、窗口比例因子等。
8.假设蓝军A的司令官向蓝军B的司令官发出一条信息:“我建议我们在明天正午12点发动进攻”。但他无法得知这条消息是否能够被通信兵安全地传达给B军。在没有收到B军的回应之前,他不会贸然单独行动。那么,假设这条信息安全传达到了B军。B军的司令看到后会向A军发回确认:“已收到,确认按时进攻。”但他将信息发回给A军之后,他同样不知道这条确认消息能不能通过通信兵安全传达到A军,所以他也不敢在约定时间展开攻击。以此类推,实际上并不存在任何一种通信协议能够保障蓝军一定能够取胜,除非另有其他通信通道。
在计算机网络中,这意味着在不可靠的网络上提供可靠服务的难度。例如,TCP在IP这种不可靠的网络中提供可靠服务,需要大量的计时器来处理各种情况。
9.IP数据报的协议字段为0x6,表示为TCP报文段。(www.daowen.com)
TCP首部中源端口号为1064(0x0428)。目的端口号为23(0x0017)。
序列号为0x00000015,确认序号为0x 00000014。
首部长度为20字节。窗口值为2047(0x07FF)。
10.因为两者确保可靠性的侧重层面不同,因此不能因为IEEE 802.11链路层有了确认和重传而放弃TCP的可靠机制。
TCP的确认和重传机制提供端到端的运输层可靠性,而IEEE 802.11只是保护了链路层。但是如果分组在交换机处丢失,路由可能会变化等问题,IEEE 802.11并不能处理这些问题。
当然,IEEE 802.11的可靠机制虽然不能保证端到端的可靠性,但是它可以更快地对分组丢失作出响应。比如,TCP将分组丢失作为拥塞指示,但是IEEE 802.11可以知道分组是否由于暂时的无线电干扰而导致的丢失,因此可以马上重传它。因此IEEE 802.11机制在无线环境中可以明显地提高性能。
11.首先,进程号和操作系统的选择密切相关,TCP/IP协议作为通用协议,要保证与操作系统的无关性。再者,一个进程可能会创建出多个通信通道,这样使用进程号无法唯一对应一个通信,而端口号和IP地址组成的套接字可以确保唯一地标识一个端到端的通信。最后,在使用端口号时,一些知名的服务都会使用约定俗成的端口号,便于双方的通信。而由于进程号的分配机制,如果使用进程号进行通信显然无法做到这一点。
12.因为当TCP收到一个ICMP差错报文时,它需要检验两个端口号以决定差错对应于哪个连接。因此一个ICMP差错报文必须至少返回引起差错的IP数据报中除了IP首部的前8字节。所以端口号必须包含在TCP首部的前8字节中。
13.在TCP/IP中,应用层与运输层的服务访问点(SAP)就是端口,不同的应用程序使用不同的端口号。注意这里的端口与路由器和交换机中的端口完全是两回事。腾讯QQ服务器的TCP端口号为8000,客户端的TCP端口号为4000。当运行多个QQ号上网时,第一个QQ号程序使用端口号4000,第二个QQ号程序使用4001,依此类推。这样,每个QQ号程序建立一条自己的TCP连接,这条连接是用套接字四元组标识的,在整个互联网是唯一的,足以区分一台计算机上的多个QQ号程序。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。