网络协议FTP、TCP
(仅作为个人笔记,如有雷同,请联系删除。。)
1、FTP:文件传输协议。
由两个部分组成:FTP服务器 + FTP客户端。
FTP服务器用来存储文件,用户可以在FTP客户端通过FTP协议访问位于服务器上的资源。
使用端口:默认使用tcp端口中的20、21端口。
20端口:用于传输数据,
21端口:用于传输控制信息。
2、TCP协议:
TCP报文:TCP首部 + 数据部分
TCP首部:默认长度20字节,加上选项部分,最长可达60字节
源端口:16 bit
目的端口:16 bit
序号:32 bit
确认号:32 bit
数据偏移:4 bit
保留字段:6 bit
控制位:6 bit
窗口字段:16 bit
校验和:16 bit
紧急指针:16 bit
选项:长度可变,最长40字节
TCP的三次握手:
A B
1、SYN=1,ACK=0: ----------------->
2、SYN=1,ACK=1: <----------------
3、SYN=0,ACK=1: ----------------->
TCP的四次挥手:
A B
1、FIN=1,ACK=0: -------------->
2、ACK=1 : <---------------
3、FIN=1 : <---------------
4、ACK=1 : ---------------->
为什么连接的时候是三次握手,关闭的时候却是四次握手?—— 全双工通信
————:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。