三次握手和四次挥手

TCP/IP是一个协议栈,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议
传输层经过port号,肯定应用层协议  Port number:  tcp:传输控制协议,面向链接的协议;通讯前须要创建虚拟链路;结束后 拆除链路 0-65535  udp:User Datagram Protocol,无链接的协议 0-65535  IANA:互联网数字分配机构(负责域名,数字资源,协议分配) mysql

0-1023:系统端口或特权端口(仅管理员可用) ,众所周知,永久的 分配给固定的系统应用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
1024-49151:用户端口或注册端口,但要求并不严格,分配给程序 注册为某应用使用,1433/tcp(SqlServer),1521/tcp(oracle), 3306/tcp(mysql),11211/tcp/udp (memcached) 49152-65535:动态端口或私有端口,客户端程序随机使用的端口 其范围的定义:/proc/sys/net/ipv4/ip_local_port_range面试


问tcp和udp不一样
tcp安全,须要三次握手
udp不安全,直接发sql

三次握手和四次挥手

第一次握手
客户端和服务器都是closed
客户端主动打开发送syn=1,seq=x,发送x数据包,x是数据包编号
服务器收处处于监听状态linsten,客户端变成syn-sent
当客户端向服务器发起链接请求时,客户端会发送同步序列标号SYN到服务器,在这里咱们设SYN为m,等待服务器确认,这时客户端的状态为SYN_SENT。
第二次握手服务器返回syn ack 服务器数据包seq=y个数据包,ack=x+1表示本身收到了,下次发送x+1个数据包,ACK是确认号,服务端编程syn-rcvd
第三次握手:客户端发送seq=x+1数据包,ack=y+1,y+1是服务端发送了y包,我要回应我收到了y包,发送y+1,编程

客户端变成estab-lished创建连接,服务端变成bestab-lished
若是是两次,客户端就不知道服务端有没有收到
四次就浪费了,至关于确认两次安全


四次挥手三次握手和四次挥手服务器

第一次挥手
A端向B端请求断开链接时会向B端发送一个带有FIN标记的报文段,这里的FIN是FINish的意思,客户端状态fin-wait1。
fin位=1
客户端向服务器端请求断开链接时会向服务器端发送一个带有FIN标记的报文段,fin=1,这里的FIN是FINish的意思。
第二次挥手,服务器收到fin标记后,发送一个确认标记位ACK=1,我收到了,服务器状态变成close-wait
第三次挥手
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手
2MSL数据包生存期oracle

4、附注
  关于三次握手与四次挥手一般都会有典型的面试题,在此提出供有需求的XDJM们参考:
  (1)三次握手是什么或者流程?四次握手呢?答案前面分析就是。
  (2)为何创建链接是三次握手,而关闭链接倒是四次挥手呢?
 
  这是由于服务端在LISTEN状态下,收到创建链接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭链接时,当收到对方的FIN报文时,仅仅表示对方再也不发送数据了可是还能接收数据,己方也未必所有数据都发送给对方了,因此己方能够当即close,也能够发送一些数据给对方后,再发送FIN报文给对方来表示赞成如今关闭链接,所以,己方ACK和FIN通常都会分开发送。ssh

相关文章
相关标签/搜索