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

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

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

  (附)10、tcp建立连接为什么要三次握手?

  tcp是一个面向连接的协议,在传送数据以前,必须要首先建立一条连接。连接的建立需要经过三次握手。为什么要经过三次握手呢,每次握手双方都做了些什么?

  1)什么是tcp报文?

  tcp报文就是通过tcp协议发送的数据包,由tcp头和数据段组成。

  tcp头是固定的20个字节,它的格式为:

  2)第一次握手做什么?

  请求端(客户端)会向服务端(被请求端)发送一个tcp报文,申请打开某一个端口。因为没有数据,所以这个报文仅包含一个tcp头。其中:

  SYN=1;当建立一个新的连接时, SYN标志变1。

  序号;序号用来标识从客户端向服务端发送的数据字节流。

  此时客户端进入SYN_SENT状态。

  3)第二次握手做什么?

  服务端收到客户端的SYN包,也会发一个只包含tcp头的报文给客户端。

  ACK=1;服务端确认收到信息

  确认序号;客户端序号+1,作为应答

  SYN=1;因为tcp的连接是双向的,服务端作为应答的同时请求建立连接。

  此时服务端进入SYN_RECV状态

  4)第三次握手做什么?

  ACK=1;客户端确认收到信息

  确认序号;服务端序号+1,作为应答

  此时客户端进入ESTABLISHED状态,服务端收到ACK后也会进入此状态

  可见,客户端和服务端都保留了对方的序号,这三次握手缺少任何一步都无法实现这一目标。在三次握手过程中,出现了一些中间状态。

  5)什么是半连接队列?

  第一次握手完成后,服务端发送ACK+SYN包到客户端,在收到客户端返回前的状态为SYN_RECV,服务端为此状态维护一个半连接队列。当服务端收到客户的确认包时,删除该条目,服务端进入ESTABLISHED状态。Listen中的backlog参数表示这两个状态合的最大值。若客户端完成第一次握手后不再发送ACK包,导致服务端未完成队列溢出,达到Dos攻击的目的。

  6)什么是SYN-ACK 重传?

  Dos攻击可以达到目的的一个重要因素是服务端在发送完SYN+ACK包后会等待客户端的确认包,如果等待时间内未收到,服务端会进行首次重传,等待一段时间仍未收到客户确认包,会进行第二次重传,直到重传次数超过系统规定的最大值,系统将该连接信息从半连接队列中删除。如果系统删除的频率小于半连接状态的增长频率,服务端就无法正常提供服务。

责编:罗莉

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

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

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

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

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

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

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

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

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

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

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