黑客基础知识(19)
时间:2026-01-19
时间:2026-01-19
很棒
。
发送者保存发送的数据的记录,在发送下一个数据之前,等待这个数据的确认消息。在它发送这个数
据的同时,还启动了一个记时器。如果在一定时间之内,没有接收到确认消息,就认为是这个数据在传送
时丢失了,接着,就会重新发送这个数据。
这种方法还产生了一个问题,就是包的重复。如果网络传输速度比较低,等到等待时间结束后,确认
消息才返回到发送者,那么,由于发送者采用的发送方法,就会出现重复的数据了。解决的一个办法是给
每个数据一个序列号,并需要发送者记住哪个序列号的数据已经确认了。为了防止由于延时或重复确认,
规定确认消息里也要包含确认序列号。从而发送者就能知道哪个包已经确认了。 TCP协议中还有一个
重要的概念:滑动窗口。这一方法的使用,使得传输更加高效。
有前面的描述可见,发送者在发送完一个数据包之后,要等待确认。在它收到确认消息之前的这段时
间是空闲的。如果网络延时比较长,这个问题会相当明显。
滑动窗口方法是在它收到确认消息以前,发送多个数据包。可以想象成有一个窗口在一个序列上移动
。
如果一个包发送出去之后还没有确认,叫做未确认包。通常未确认的包的个数就是窗口的大小。
此窗口的大小为8。发送者允许在接收到一个确认消息以前发送8个数据包。当发送者接到窗口中第一
个包的确认消息时,它就将窗口下滑一个。
在接收端,也有一个滑动窗口接收和确认一个包。
端口
使用TCP传输就是建立一个连接。在TCP传输中一个连接有两个端点组成。其实,一个连接代表的是发送和
接收两端应用程序的之间的一个通信。可以把他们想象成建立了一个电路。通常一个连接用下面的公式表
示:
(host,port)
host是主机,port是端口。TCP端口能被几个应用程序共享。对于程序员来讲,可以这样理解:一个应用
程序可以为不同的连接提供服务。
TCP格式
TCP传输的单位是段,在建立连接,传送数据,确认消息和告之窗口大小时均要进行段的交换。
段的格式如下图:
段的格式也分成两部分,头和数据。
上面格式中的名称已经足够说
明了他们的作用了。具体的含义请参见有关资料。
建立一个TCP连接
TCP协议使用一个三次握手来建立一个TCP连接的。
握手过程的第一个段的代码位设置为SYN,序列号为x,表示开始一次握手。接收方收到这个段后,向
发送者回发一个段。代码位设置为SYN和ACK,序列号