计算机网络一直都是开发者的难点之一,下面将会跟大说说说关于计算机网络的基础问题。
1、TCP的三次握手
这里要先介绍一下一些符号的意思:
- 顺序号seq:用来标识从TCP源端向TCP目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。
- 确认号ack:包含发送确认的一端所期望收到的的下一个顺序号,因此,确认号应当是上次已成功收到数据字节顺序号加1.
- SYN:同步序号,为1表示连接请求,用于建立连接和使顺序号同步。
- FIN:用于释放连接,为1表示发送方已经没有数据发送了,关闭本端数据流。
第一次握手:Client发送位码syn=1,随机产生seq number = 1234567的数据包到服务器,Client进入SYN-SENT状态,主机B由SYN = 1知道,A要求建立联机;
第二次握手:Server收到请求后腰确认联机信息,向A发送ack number =(seq+1),syn=1,ACK=1,随机产生seq = 7654321的包,Server进入SYN-RCVD状态
第三次握手: Client收到后检查ack number是否正确,即第一次发送的seq+1,ACK是否为1,若正确,Client会再发送ack number = (B的seq+1),ACK = 1,主机收到后确认seq的值与ACK=1则连接建立成功
2、TCP的四次挥手
TCP采用四次挥手来释放连接
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,主机A进入FIN_WAIT_1状态;
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1,主机B进入CLOSE_WAIT状态;
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态;
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
3、TCP和UDP的区别
- 1、TCP面向连接 , 而UDP是无连接的,即发送数据之前不需要建立连接
- 2、TCP提供可靠的服务,通过TCP链接传送的数据,无差错,不丢失,不重复,且按照顺序到达。UDP不保证可靠交付。
- 3、TCP传输效率相对较低,UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。
- 4、TCP链接只能是点对点,一对一,UDP支持一对一,一对多、多对一和多对多的交互通信。
4、HTTP和HTTPS的区别
- HTTPS需要CA申请证书,HTTP不需要
- HTTPS密文传输,HTTP明文传输
- 连接方式不同,HTTPS默认使用443端口,HTTP使用80端口
- HTTPS = HTTP + 加密+认证+完整性保护,较HTTP安全