TCP/IP协议 应用层:
应用层协议: http https ftp nfs dns tftp smtp pop3 imap telnet ssh
应用层协议端口号:http80 https443 ftp21 dns53 tftp69 smtp25 pop3 110 imap143 telnet23 msql3306 oracle1521
0-1023 系统端口或特权端口,永久分配给固定系统使用。
修改本主机端口号:/etc/ssh/ssh_config (默认22)
查看端口号 ss -ntl
cat /etc/services linux中查看应用层协议和端口号的文件
TCP 传输控制协议 (应用最广泛)(可靠性强)(建立三次握手)
UDP 用户数据包协议 (不可靠)
TCP特性:
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
TCP建立三次握手,四次挥手(SYN,ACK,FIN)。
三次握手过程:
第一次:客户端发送SYN包到服务器,并进入等待确认状态;
第二次:服务器收到SYN包,确认客户端的SYN包,同时服务器也发送一个SYN包,即同时发送SYN+ACK包,并进入等待确认状态;
第三次:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,双方进入数据传送状态。
四次挥手过程:
第一次:客户端发送一个FIN,用来关闭客户端到服务器的数据连接,客户端进入主动关闭状态;
第二次:服务器收到信号后,发送一个应答给客户端,服务器进入被动关闭状态;
第三次:服务器发送一个FIN,用来关闭服务器到客户端的数据传送,服务器进入最后的确认关闭状态;
第四次:客户端收到信号后,发送一个应答信号给服务器,双方进入关闭状态。
为什么建立连接是三次握手,而关闭就是四次挥手呢?
因为服务器端在监听状态下,收到建立连接请求的SYN报文后,将ACK和SYN放在一个报文里发送给客户端;
而关闭连接时,收到对方的FIN时,仅仅代表对方不再发送数据了但还是能接收数据,所以ACK和FIN一般会分开发送;