日期:2014-05-16 浏览次数:20676 次
如果我们把TCP连接看做是打电话 那么 socket函数等同于有电话可以用。Bind用于告诉其他人你的电话号码,让他们可以向你打电话。Listen是打开打开电话的振铃,它使你可以听到一个外来电话。Connect要求你知道另一方的电话号码并拨打它。Accept是被呼叫回电话
建立一个TCP连接 过程至少需要三个交换三个分组,因此称之为TCP的三路握手 下面说下详细步骤:
1.服务器必须准备好接受外来的连接。这通过调用socket,bind和listen函数来完成,称为被动打开(passive open)。
2.客户通过调用connect进行主动打开(active open)。这引起客户TCP发送一个SYN分节(表示同步),它告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号。一般情况下SYN分节不携带数据,它只含有一个IP头部,一个TCP头部及可能有的TCP选项(下面介绍)。
3.服务器必须确认客户的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。服务器以单个分节向客户发送SYN和对客户SYN的ACK。
4.客户必须确认服务器的SYN。
每一个SYN可以含有若干个TCP选项 一般常用的有下面几种:
MSS选项:TCP发送的SYN中带有这个选项是通知对方它的最大分节大小MSS(maximum segment size),即它能接受的每个TCP分节中的最大数据量(使用TCP_MAXSEG套接口选项获取与设置这个TCP选项)。
窗口规模选项:TCP双方能够通知对方的最大窗口大小是65535,因为TCP头部相应的字段只占16位。
时间戳选项:这个选项对高速连接是必要