二、传输层协议简介

来源:互联网 发布:怎样做文明网络小公民 编辑:程序博客网 时间:2024/05/22 02:03
17、TCP不能确保数据一定会被对方的端点接收到,因为这是不可能的,它只能是负责把数据传递到目的端点,否则就通知用户数据没有收到,因此TCP并不是100% 可靠地协议。它提供的是数据的可靠递送和故障的可靠通知。
18、TCP的连接和传递数据的超时时间都是有特定的算法去动态的估算各个部分的连通时间。
19、TCP中数据是根据里边的序列号来确认信息的是否接收的。如果TCP接收到来自对端的重复数据可以根据序列号来判定数据是重复的,从而丢弃掉重复数据。比如2048字节的数据从TCP的一端传送至另一端,TCP选择两个分节来发送信息的话,第一个分节所含数据的序列号为1-1024,第二个数据包的分节是1025-2048
20、UDP不会不对数据检测和重传,也不会对收到的数据进行选择排序,因为UDP的协议中没有对于数据序列号的标记。如果想要确保UDP数据的安全,必要的方法是在UDP的应用中处理所有的情况。
21、TCP提供流量控制的功能,TCP总是能够告知对端在任何时刻它一次能够从对端接受多少自己的数据,这个被称为通告窗口。在任何时刻,这个窗口指的都是接收端的规定的缓冲区当前可用空间的空间量。从而保证接收到的数据你不会在缓冲区溢出。这个窗口是动态变化的,当接收到发送端的数据时,缓冲区被占用,窗口尺寸就对应的减少,当读取出缓冲区的数据时,窗口尺寸动态增加。
22、TCP的窗口尺寸时有可能减少到0的,当接受数据的缓冲区已满,数据没有被读出时,窗口尺寸就变为0.只有数据读出后,才能继续接受数据。
23、TCP的服务器必须时刻准备好接受外来的连接。
24、connect函数被调用后发起主动打开,这会导致TCP的客户端发送一个SYN分节,这个分节中,它会告诉服务器,客户端在本次连接中发送数据的初始序列号。通常SYN分节不携带数据,其所在的IP数据报也只含有一个IP首部,一个TCP的首部以及有可能的TCP选项。
25、服务器要ACK客户端的SYN,同时也要发送自己的SYN,这个SYN中包含的是同一个连接中TCP服务器端的数据包的初始化序号。服务器选择的是在单个分节中发送SYN和ACK的组合。
26、客户端必须最终确定服务器的SYN,至此三路握手完成。因为有3个分组或者是分节,所以称之为TCP的三路握手。
27、TCP选项(TCP的选项)
        MSS选项:在发送SYN的一端使用·本选项告知对端它的最大分节大小,即MSS选项。也就是它在本连接中的每个TCP分节中愿意接受的最大数据量。发送端使用接收端的MSS值作所发送的分节的最大大小。
        窗口规模选项:TCP连接任何一端能够告知对端的最大窗口大小是65535,因为在TCP的首部中相应的字段占16位
        时间戳选项:防止失而复得的分组可能造成的数据损坏。对于高速网络连接十分有必要,但是网络编程来讲,不需要考虑过多问题。
28、TCP的连接终止,即为4次挥手
           1、 TCP终止连接需要4个分节,首先一端先调用close函数,比如说客户端,我们称之为该端执行的时候主动关闭。该端发送一个FIN分节,表示数据发送完毕。
           2、对端接收到发送端的FIN后执行被动关闭,会接收到来自发送端的0个字节的数据包,这个FIN由TCP确认,并不需要应用确认。FIN的接收也以作为一个文件结束符传递给接收端的应用进程,同时等待传递至接收端的数据接收完成后,在相应的连接上接收端再无额外数据可以接收。
           3、一段时间后,接收到这个文件结束符的的应用进程将调用close函数关闭它的套接字。这导致它的TCP同时也会发送一个fin分节、
           4、接收到这个最终FIN的原发送端TCP确认这个FIN ,关于等待可以作细究。
注意:无论是客户端还是服务器,任何一段都可以执行主动关闭,通常情况下是有客户执行主动关闭,但是有些协议则规定必须由服务器执行主动关闭,比如HTTP。
29、TCP为一个连接定义了11种状态,并且规定了如何在某种状态下转化为另一种状态,可以使用netstat监视状态的变化。
0 0