当前位置:首页 > 全部子站 > IT > 水平考试

2011年软考程序员考试复习笔试知识点整理(6)6

来源:长理培训发布时间:2017-10-20 14:20:28

   7)Tcp关闭连接需要四次握手,这又是为什么呢?

  这是由tcp半关闭(harf-close)造成的。既然一个TCP连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。即一方发送一个FIN,另一方收到后发送一个ACK,这就是所谓的四次握手了。

  8)第一次握手做什么?

  客户端发送一个FIN(这个客户端是主动发起关闭的一端,与建立连接时的客户端不一定是同一主机)

  此时客户端进入FIN_WAIT_1状态。

  9)第二次握手做什么?

  服务端收到FIN,发回客户端一个ACK,确认序号为收到的序号加1(因为FIN和SYN一样,会占用一个序号);客户端收到ACK之后会进入FIN_WAIT_2状态,服务端会进入CLOSE_WAIT状态。

  10)第三次握手做什么?

  服务端发送给客户端一个FIN。服务端进入LAST_ACK状态。

  11)第四次握手做什么?

  客户端收到FIN,发回服务端一个ACK,确认序号为收到的序号加1;客户端会进入TIME_WAIT状态,2MSL超时后进入CLOSE状态。服务端收到ACK后也会进入CLOSE状态。

  其实我们通俗的说每次握手其实就是发一次数据包的过程。建立连接时双方共发送了3个包,关闭连接时发送和确认的两次握手决定了一端数据流的关闭,四次握手可以保证两方都关闭。

  12)为什么建立连接是三次握手,而关闭连接是四次呢?

  建立连接时,服务端可以把应答ACK和同步SYN放在一个报文里进行发送。而关闭连接时,收到FIN通知仅仅表示对方没有数据发送过来了,并不表示自己的数据全部发送给了对方。所以ACK和FIN是分了两次进行发送。如果服务端收到FIN,恰恰自己也没有数据要发,是不是ACK和FIN可以一起发给客户端呢,这样就可以少一次数据流了。世界是美好的,经典的TCP连接状态图中也考虑到了这种情况,tcp关闭连接确实是只有三次数据流动,服务端将ACK和FIN放在一个包里进行发送,但四次握手这个概念却已经根深蒂固无法更改了。

  13)Tcp的各个状态是怎样的?

  客户端的正常tcp状态:

  CLOSED->SYN_SENT(第1次)->ESTABLISHED(第3次)->FIN_WAIT_1(第1次)->FIN_WAIT_2(第2次)->TIME_WAIT(第4次)->CLOSED

  服务端的正常tcp状态:

  CLOSED->LISTEN->SYN_RCVD(第2次)->ESTABLISHED(第3次)->CLOSE_WAIT(第2次)->LAST_ACK(第3次)->CLOSED(第4次)

  tcp还有其他的非正常状态,在此不做讨论。

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部