为什么TCP连接要三次握手,四次挥手
TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换TCP窗口大小信息。
- 第一次握手: 客户端向服务器发出连接请求报文,这时报文首部中的同部位SYN=1,同时随机生成初始序列号 seq=x,此时,客户端进程进入了 SYN-SENT状态,等待服务器的确认。
- 第二次握手: 服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己随机初始化一个序列号 seq=y,此时,服务器进程进入了SYN-RCVD状态,询问客户端是否做好准备。
- 第三次握手: 客户端进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,此时,连接建立,客户端进入ESTABLISHED状态,服务器端也进入ESTABLISHED状态。
如果去掉最后一次握手是否可行?
假设客户端需要和服务器建立连接,客户端发送了第一个连接请求报文,但是由于网络信号差或者服务器负载过多,这个请求没有立即到达服务端,而是在某个网络节点中长时间滞留,以至于客户端释放连接以后的某个时间点才到达服务端,那么这个报文就是一个失效的报文,但是服务端接收到这个失效的请求报文后,就认为这是客户端刚发来的一次连接请求,服务端就会向客户端发出确认报文,表示同意建立连接。
假如不采用三次握手,那么服务器发出确认,表示新的连接就建立了。但是现在客户端并没有发出建立连接的请求,其实这个请求是失效的请求,客户端是不会理睬服务端的确认信息的,也不会向服务端发送确认的请求,但是服务器却认为新的连接已经建立起来了,并一直等待客户端发来数据,这样的情况下,服务端的很多资源就没白白浪费掉了。
采用三次握手的办法就是为了防止上述这种情况的发生,比如就在刚才的情况下,客户端不会向服务端发出确认的请求,服务端会因为收不到确认的报文,就知道客户端并没有要建立连接,那么服务端也就不会去建立连接,这就是三次握手的作用。TCP快速重传和拥塞控制
- 快速重传:超时触发重传存在的一个问题是超时周期往往太长。所幸的是,发送方通常可在超时事件发生之前通过注意所谓的冗余ACK来较好地检测丢包情况。冗余 ACK就是再次确认某个报文段的ACK,而发送方先前已经收到过该报文段的确认。例如,发送方A发送了序号为1、2、3、4、5的TCP报文段,其中2号报文段在链路中丢失,它无法到达接收方B。因此3、4、5号报文段对于 B来说就成了失序报文段。TCP规定每当比期望序号大的失序报文段到达时,就发送一个冗余ACK,指明下一个期待字节的序号。在本例中,3、4、5号报文到达B,但它们不 是B所期望收到的下一个报文,于是B就发送3个对1号报文段的冗余ACK,表示自己期望接收2号报文段。TCP规定当发送方收到对同一个报文段的3个冗余 ACK时,就可以认为跟在这个被确认报文段之后的报文段已经丢失。就前面的例子而言,当A收到对于1号报文段的3个冗余ACK时,它可以认为2号报文段已经丢失。这时发送方A可以立即对2号报文执行重传。
- 拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
拥塞控制的方法:慢启动,拥塞避免算法,快速重传,快速恢复。进程和线程的区别
- 进程是运行中的程序,线程是进程的内部的一个执行序列
- 进程是资源分配的单元,线程是执行单元
- 进程间切换代价大,线程间切换代价小
- 进程拥有资源多,线程拥有资源少
- 多个线程共享进程的资源
tcp滑动窗口机制
tcp慢启动机制
tcp udp位于什么层,有什么区别?
传输层
区别
tcp是面向连接的(3次握手),udp是面向无连接的
tcp连接过程耗时,udp不耗时
tcp传输速率较慢,实时性差(连接时间、首部信息多),udp传输速率较快
tcp连接过程中出现的延时增加了被攻击的可能,安全性不高,而udp不需要连接,安全性较高
tcp是可靠的,保证数据传输的正确性,不易丢包,udp是不可靠的,易丢包
tcp可靠的四大手段: 顺序编号;确认机制;超时重传;校验信息
UDP使用尽最大努力交付,即不保证可靠交付, 因此主机不需要维持复杂的链接状态表(这里面有许多参数)
tcp是流模式,udp是数据包模式:tcp只要不超过缓冲区的大小就可以连续发送数据到缓冲区上,接收端只要缓冲区上有数据就可以读取,可以一次读取多个数据包,而udp一次只能读取一个数据包,数据包之间独立
二者的使用场合
想象开发游戏时候,游戏的登录(TCP)、游戏的操作(UDP)
对数据可靠性的要求。tcp适用于可靠性高的场合,udp适用于可靠性低的场合
应用的实时性。tcp延时较大,udp延时较小
网络的可靠性。网络不好的情况下使用tcp,网络条件好的情况下,使用udp
使用TCP:HTTP(S)、FTP
使用UDP:DNS、IP电话
易错基础知识
- 计算机存储容量的基本单位是Byte,位是内存的最小单位,计算机中信息存储的最小单位是比特,计算机中信息的传递是以字为单位的
- 在微机中,DOS属于系统软件
- 当前,在计算机应用方面已进入了以计算机网络为特征的时代
- 操作系统是计算机与用户的接口
- 浮点数进制转换
- 操作系统对磁盘进行读/写操作的单位是扇区
- 操作系统的主要功能包括处理机管理、存储管理、文件管理、设备管理和作业管理