问题一:TCP建立连接时的三次握手,描述一下: 1、建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。 (2)服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。 (3)客户必须再次回应服务段一个ACK报文,这是报文段3。 2、连接终止协议(四次挥手) 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。 (1)TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)。 (2)服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。 (3)服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)。 (4)客户段发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。 ================================================================ 问题二: 两个字符串比如 "abcfegbicd" "bcecgbiddc" 写一个程序,找出这两个字符串中连续匹配最多的字符串。匹配不需要位置对齐,比如第一个字符串中第二个第三个字符和第二个字符串中第一个第二个字符能匹配。但这两个字符串中的gbi是匹配数目最大的字符串。要求程序选出这三个字符来。 解答见“查找两个字符串中匹配最多的字符.c” 我用了一个小时在我笔记本上做出来了(包括调试),还得多思考这些问题并编程才行啊!面试那容我们用一个小时去做这么个简单的问题呢,况且心态绝对不如我回家解答时候那么平静。