本文内容参考《Unix网络编程》,大概描述了TCP连接的三次握手过程,这是我看到的最清楚的描述,记录在这里,希望能帮助到大家对于TCP连接过程的理解。
传输控制协议(TCP)是TCP/IP协议簇里非常重要的一个协议。它提供客户与服务器之间的连接,并且提供可靠的数据传输功能。关于这个协议的具体规定,请参考相关文献。这里简单讲述一下三路握手。
建立一个TCP连接时会发生以下几个过程:
1.服务器必须做好接受外来的连接的准备。这个过程通过调用socket、bind和listen这三个函数来完成。
2.客户通过调用connect发起主动打开。这个过程中,客户发送一个SYN分节告诉服务器,客户将在连接中发送数据的初始序列号。
3.服务器确认客户的SYN,同时自己发送一个SYN,包含服务器将在该连接中发送的数据的初始序列号。
4.客户确认服务器的SYN。
非常形象的一个描述:
建立TCP连接就好比一个电话系统。socket函数等同于有电话可用。bind函数是在告诉别人你的电话号码,这样他们可以给你打电话。listen函数是打开电话铃声,这样当有外来呼叫时你可以听到。connect函数要求我们知道对方的号码并拨打它。accept函数就好比是被呼叫者接听电话了。当呼叫者听到对方接听之后,就相当于最后一次确认,然后就可以通话了。
原文地址:http://blog.csdn.net/bing_bing304/article/details/41512115