1、运输层是端对端(应用进程)之间的通信。
2、TCP和UDP的区别
1)TCP是全双工的可靠信道。UDP尽最大努力交付,是不可靠信道。
2)UDP开销小,效率比较高。
3)TCP提供面向连接的服务,UDP传输数据之前不需要建立连接。
4)UDP没有拥塞控制。TCP面向字节流,根据对方给的窗口值和拥塞程度决定报文字节。
3、端口:标志计算机应用层中各进程在和运输层交互的层间接口。
4、停止等待:每发完一个分组后就停止发送,等待对方的确认。收到确认后再发送下一个分组。
5、自动重传请求ARQ:设置超时重传,确认丢失和确认收到。连续AQR协议的主要形式是滑动窗口。报文段每重传一次,就把超时重传时间增大些。
6、TCP可靠传输的实现:
1)以字节为单位的滑动窗口;
2)超时重传;
3)选择确认SACK:即接收方通过选择确认告诉发送方那些数据丢失,那些数据已经收到等,选择确认这种可靠传输方式也称为快速选择性重传
7、TCP的流量控制:让发送方的速率不要太快,让接收方来得及接收。由接收方向发送方发送报文进行控制。针对可能出现死锁的情况,设置持续计数器。
8、TCP的拥塞控制:通过超时判断进行控制。
1)慢开始:由小到大增大发送窗口。慢指的是最开始的发送报文数小,不是指增长率慢,增长率是倍数增长。
2)拥塞避免:让发送方的拥塞窗口每经过一个往返时间就加1。称加法增大。慢开始和拥塞避免算法之间的切换由一个慢开始门限值决定。
3)快重传:接收方操作,防止发送方把个别报文段的丢失当成拥塞。
4)快恢复:丢失个别报文段后,发送方不启动慢开始,而是将慢开始门限值除以2,拥塞窗口值改成慢开始门限值。称乘法减小。
9、三次握手:首先服务器进程先保持LISTEN状态,等待连接请求。
1)客户端向服务器端发出连接请求报文段。SYN = 1, seq = x。
2)服务器端向客户端发送确认。SYN = 1, ACK = 1, seq = y, ack = x + 1。
3)客户端收到确认后,向服务器端发出确认。ACK = 1,seq = x + 1,ack = y + 1。最后一次的确认是为了防止已失效(如在某个网络节点长时间滞留)的连接请求报文段突然又发送到了服务器。
10、四次挥手:首先两方都处于ESTABLISHED状态。
1)客户端发出连接释放报文段。FIN = 1,seq = u。
2)服务器收到后发出确认,ACK = 1, seq = v, ack = u + 1,进入CLOSE-WAIT状态。此时客户到服务器方向的连接释放了,TCP处于半关闭状态,但服务器到客户端方向的连接没关闭。客户端受到确认后进入FIN_WAIT_2(终止等待2)状态。
3)若服务器已经没有要向客户端发送的数据,发出释放连接。FIN = 1,ACK = 1, seq = w,ack = u + 1。服务器进入LAST_ACK(最后确认)状态。
4)客户端收到释放报文段后,对此发出确认。ACK = 1,seq = q + 1,ack = w + 1。经过等待时间计数器后,才进入CLOSE状态。原因是保证最后这个报文段能穿到服务器(如果丢失服务器会超时重传,客户端再重传);同时防止已失效的连接请求报文段突然又发送到了服务器(经过这段时间后,本连接的报文都已经在网络上消失)。