- 论坛徽章:
- 0
|
出处:技术OnLine(www.onlinejs.com)
作者:S.y神韵
转载请注名出处.并保留以上版权信息.谢谢.
如有错误欢迎与我探讨E-mail:schch110@163.com
大家都知道TCP是一个可靠的传输协议
在传输数据之前先要协商建立连接放能发送数据.
这个过程呢,俗称三次握手.
首先,客户端或者请求发起连接的那一方发送一个SYN,用来指名打算连接的服务器的端口.和ISN,也就是初始序列号.这个是经过TCP里面的特有算法产生的(很多人认为是随机的)
其次.服务器发回一个报文对发起方进行确认.这个发送的时候首先产生ACK确认,但是并不是马上就把ACK发送回去,通常回等待200MS以内,和需要沿着服务器到发起方需要传送的数据一起发过去,也就是说顺便把ACK和要发送的数据绑定在一起发.只发一次.服务器发送一个SYN作为应答,并将ISN加一.
最后, 发起方收到服务器发来的数据,再对ISN加一,返回给服务器做确认.
完成了这个三次握手的过程.这个过程大家看见了ISN的序列好是经过算法产生的.在一定的程度上来说他是不能够被猜出来的,因为TCP是需要建立连接后才能发送数据,所以,这个特性能避免一些黑客的攻击.
TCP是三次握手?
其实也有TCP建立连接的时候是四次握手.大家都知道TCP建立连接是三次握手.撤除连接是四次握手.那么TCp连接的四次握手是怎么出现的呢?
假如主机A和B.俩台主机同时向对方发起TCP连接,由于TCP是双响建立连接的.所以A发给B的同时.B也发给A一个连接的请求.当A,B收到请求后,分别要给对方回ACK;来确认.这样双方就建立了完整的TCP连接.
其实这个过程就是把三次握手中的第2部,服务器进行确认的同时捎带ACK包.在四次握手中把这个分开了,分别进行单方向的TCP连接的建立.
这个过程比TCP三次握手多握了一次,也就是我文中说的四次握手.过程的建立道理是一样的. |
|