TCP协议:
——————————————
TCP协议特点和TCP报文段格式
TCP连接管理
TCP可靠传输
TCP流量控制
TCP拥塞控制
——————————————
TCP协议的特点:
1)TCP是面向连接(虚连接)的传输层协议
2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
3)TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达【可靠有序,不丢不重】
4)TCP提供全双工通信:【发送缓存:准备发送的数据、已发送但尚未收到确认的数据;接收缓存:按序到达但尚未被接受应用程序读取的数据、不按序到达的数据】
5)TCP面向字节流:TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流【流:流入到进程或从进程流出的字节序列】
TCP报文段首部格式:
——————————————————
TCP连接管理:
TCP连接传输三个阶段:
1)连接建立
2)数据传送
3)连接释放
TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器
TCP的连接建立(三次握手):假设运行在一台主机(客户)上的一个进程想与另一台主机(服务器)上的一个进程建立一条连接,客户应用进程首先通知客户TCP,它想建立一个与服务器上某个进程之间的连接,客户中的TCP会用以下步骤与服务器中的TCP建立一条TCP连接:【seq:序号,ack:确认号】
SYN洪泛攻击:【解决办法:SYN cookie】
TCP的连接释放(四次挥手):参与一条TCP连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的“资源”(缓存和变量)将被释放
————————————————
TCP可靠传输:
网络层:提供尽最大努力交付,不可靠传输
传输层:使用TCP实现可靠传输【如果使用UDP协议,则在应用层实现可靠传输】
可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的
TCP实现可靠传输的机制:
1)校验:与UDP校验一样,增加伪首部
2)序号
3)确认:TCP默认使用累计确认
4)重传:确认重传不分家,TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段【超时重传,TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)】
等太久了怎么办???
—————————————————
TCP流量控制:让发送方慢点,要让接收方来得及接收
TCP利用滑动窗口机制实现流量控制
在通信过程中,接收方根据自己接收缓存的大小,动态的调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值【接收窗口:接收方根据接受缓存设置的值,并告知给发送方,反映接收方容量;拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量】
这个时候假设B给A发了一个非零的rwnd,但是在路上丢失了,主机A在等着B发送非零窗口,主机B在等着A的确认消息,两者相互等待,造成死锁
解决方法:
1)TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器
2)若持续计时器设置的时间到期,就发送一个零窗口探测报文段,接收方收到探测报文段时给出现在的窗口值
3)若窗口仍然是0,那么发送方就重新设置持续计时器
————————————————
TCP拥塞控制:防止过多的数据注入到网络中【全局性】
出现拥塞的条件:对资源需求的总和>可用资源【网络中有许多资源同时呈现供应不足—>网络性能变坏—>网络吞吐量将随输入负荷增大而下降】
拥塞控制四种算法:
1)慢开始、拥塞避免
2)快重传、快恢复