"Tcp/ip 建立连接式的三次握手"是啥?(300分送)(300分)

  • 主题发起人 sunxufeng
  • 开始时间
S

sunxufeng

Unregistered / Unconfirmed
GUEST, unregistred user!
俺听说Tcp/ip 建立连接时有三次握手,具体是怎样的?
 
你是指WINSOCK连接??
 
抄的——

TCP使用三次握手机制来建立一条连接,握手的第一个报文为SYN包;
第二个报文为SYN/ACK包,表明它应答第一个SYN包同时继续握手过程;
第三个报文仅仅是一个应答,表示为ACK包。
 
说白了,就是
1。我告诉你要建连结
2。你回答我说可以建连结
3。我有对你说我接到你的回答了
然后就可以建连结了,当然了里面还有一些细节的东西,但是思想就是这样....
 
tcp/ip 与WINSOCK 有什么关系呢?
传数据时是不是也使用以下步骤:
1。我传数据
2。你回答说受到了,并告诉我.
3。俺继续传
请多多赐教!
 
tcp/ip是底层协议,socket是网络编程接口,是不同层次上的东西,
就是你写网络程序时,你使用socket函数,而具体里面实现的细节,对你来说
是透明的,具体协议实现什么的被包在socket里面了,你只要调socket函数写程序
就好了,别的不用管,当然要写好的网络程序,对于网络协议细节要十分了解,
呵呵,最好连报文格式都能背下来,这方面的资料要去看 RFC ...
 
加一点:两边都有定时器来监测握手信号丢失
 
首先要说明的是,三次握手是为了数据传送的安全可靠。
过程如下:
1。客户机(C)向服务器(S)发送一个TCP数据,表示请求建立连接.
这个数据包含以下信息:SYN位=1(表示请求连接),设置Client序列号ISNclient=250
(假设为250).
2。Server收到了数据,并从SYN位为1知道这是一个建立请求的连接.于是Server也向Client
发送一个TCP数据.因为是响应Client的请求,于是Server设置ACK(表示接受)位为1,
ack_seq(接受序列号)=251(250+1)同时设置自己的序列号ISNserver=500(我们假设为500).
3。Client收到了Server的TCP,并从ACK为1和ack_seq=251知道是从服务器来的确认信息.
于是客户机也向服务器发送确认信息.客户机设置ACK=1,设置ack_seq=501,设置自己的序列号
ISNclient=251,发送给服务器.至此客户端完成连接.最后一步服务器受到确认信息,也
完成连接.
序列号设置比较麻烦,仔细看看好了。

 
其实 TCP 和 IP 也是不同层次的协议,TCP 工作在传输层,负责可靠的数据传输,IP 则负责
更底层的寻址等。
 
由于网络不可靠性和它的存储能力,使得传输的信号有可能丢失或操时,因此建立连接必须
1. A 发信号给B
2.B给A发反馈信号
3.A接收到反馈,并发送反馈信号告诉B说已经接收到B的反馈。
4. ..............
5. .................
。。。。。。。。
这样下去连接永远不能成功。

而三次握手的建立连接算法只要到第三步A发送完的时候就建立连接,虽然这不是绝对可靠
的,但是其可靠性也已经足够了。

呵呵,这些都是以前上网络课的时候学的,差不多就这些吧。

 

Similar threads

顶部