1、简述TCP的三次握手和四次挥手

SYN:请求建立连接,FIN:请求断开连接,ACK:确认是否有效, seq:序列号, ack:确认号

1)三次握手

1.客户端向服务端发送⼀个SYN=1(请求建立连接),并生成一个序列号seq=j。

2.服务端接收到SYN=1后,给客户端发送⼀个SYN=1与ACK=1;并将ack置为j+1;同时生成一个序列号seq=k。

3.客户端接收到会检查ack是否为j+1与ACK是否为1,如果是,则会给服务端发送一个ACK=1与ack=k+1,以及自己的序列号seq=j=1; 服务端接收到会检查ACK是否为1与ack是否为k+1,如果是则代表连接建立成功,两者间可以传递数据。

2)四次挥手

1.客户端向服务端发送FIN=1(请求关闭连接),并生成一个序列号seq=x。

2.服务端接收FIN后,向客户端发送ACK=1,ack=x+1,并生成序列号seq=y(客户端无数据发送,但服务器端需发送完最后的数据)。

3.服务端处理完所有数据后,向客户端发送FIN=1与ACK=1,ack=x+1,并生成序列号z,表示服务端现在可以断开连接。

4.客户端收到服务端的数据包后,会向服务端发送ACK=1,seq=x=1,ack=z+1(需要等待2MSL后才可断开连接)。

2、为什么是三次握手而不是两次握手?

因为如果客户端第一次发送的SYN报文因为网络问题而迟迟没有到达服务端,此时客户端会因为超时而重新发送一个新的SYN报文,此时上一个SYN报文在客户端就会失效,如果这里只采用两次握手,会因为客户端第二次发送SYN后,第一次发送的SYN又成功到达服务端,这时就会建立两个连接,产生问题。

3、为什么连接的时候是三次握手,关闭的时候却是四次握手?

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

4、为什么需要经过2MSL(报文段在网络中最大生存时间)才能返回到CLOSE状态?

是为了给最后一次发送的ACK报文成功到达服务端预留时间,因为如果因为网络阻塞最后一次ACK未能及时到达服务端,服务端会以为客户端为收到上一次发送的FIN报文,则服务端会重新发送FIN报文,而这是客户端已经断开连接了,这时就是产生错乱的问题。

5、TCP与UDP的区别

UDP适合广播发送,效率高但是不可靠。

TCP适合两个对象间传递数据,可靠性高但是效率低。

TCP/IP协议常见面试题相关推荐

  1. TCP/IP 协议 常见面试题1

    1  TCP和UDP区别,应用场景 TCP:为应用层提供可靠的.面向连接的和基于流的服务.使用超时重传.数据确认等方式来确保数据包被正确地发送至目的端,因此服务是可靠的.使用TCP协议通信的双方必须先 ...

  2. 网络协议常见面试题集锦

    (一)网络基础知识 1)Http和Https的区别? 答:Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份:Https是身披SSL(Secure Socket Layer) ...

  3. Python常见面试题:TCP 协议中的三次握手与四次挥手相关概念详解

    今天来聊聊Python常见面试题中面试频率特别高的一个题目:TCP 协议中的三次握手与四次挥手. 涉及到的知识点有: 1.TCP.UDP 协议的区别 2.TCP 头部结构 3.三次握手与四次挥手过程详 ...

  4. HTTP协议与HTTPS协议详解(含常见面试题)

    目录 1.HTTP协议 1.1HTTP协议是什么 1.2 HTTP协议工作过程 1.3 HTTP请求方法 1.4.HTTP请求报文和应答报文 1.5 HTTP状态码 2.HTTPS协议 2.1.什么是 ...

  5. TCP的三次握手和四次挥手及常见面试题

    一.前言 今天上掘金查看热门文章,发现一篇好文 ★前端 100 问:能搞懂 80% 的请把简历给我 ★ ,此文包含100个前端面试问题,仔细阅读完所有题目后,顿感身中数刀无法呼吸,留下了没有技术的泪水 ...

  6. tcp报文格式_腾讯面试中的TCP/IP协议简述+经典面试题

    面试题有福利 TCP/IP协议简述+ TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器, ...

  7. 网络基础 TCP/IP协议面试常问知识点

    网络基础 TCP/IP协议面试常问知识点 ****************** 如有侵权请提示删除 ********************* 1.网络包的组成: 报头/起始帧分界符--MAC头部-- ...

  8. ❀TCP/IP协议面试题总结❀

    文章目录 零.三次握手与四次挥手 一.什么是TCP/IP协议? 二.什么是TCP协议 三.TCP和UDP的区别 四.TCP和UDP各自的特点和应用场景 五.为什么tcp的传输速率会比udp慢 六.介绍 ...

  9. 软件测试系统学习流程和常见面试题

    在学习软件测试的时候你是否会感觉到不知从何下手? 今天教导你们软件测试学习的系统流程和面试常见的问题. 学习流程 一.必备技能 编程基础,能看懂前端页面,掌握一门语言:php/python/java等 ...

最新文章

  1. 二.Python的基础语法知识
  2. 洛谷P1456 Monkey King
  3. WebsiteSpark是免费软件吗?
  4. redis storm mysql_flume+kafka+storm+redis/mysql启动命令记录
  5. [SAP ABAP开发技术总结]OLE
  6. mysql 行转列 列转行
  7. 【STM32F103C8T6】 TTL转usb下载程序
  8. 如何使用Apple Watch控制Apple TV
  9. 三星note10安装linux,三星Note10/Note10+新款Dex已支持Win10/macOS
  10. 【毕设教程】NBIOT 窄带物联网介绍
  11. 如何设置快速启动栏 win7 快速启动栏 快速启动栏不见了
  12. android 代码设置默认浏览器打开,android手机如何设置默认浏览器?
  13. linux格式化u盘为ntfs格式,Linux下格式化U盘为NTFS格式
  14. 局域网雨云蠕虫病毒的处理
  15. (附源码)springBoot高校宿舍交电费系统 毕业设计 031552
  16. nRF Connect SDK(NCS)-Windows开发环境搭建
  17. chrome + IDM + 油猴插件 实现百度网盘大文件的高速下载
  18. Day210.服务端渲染技术NUXT、整合前台主页面、名师、课程静态页面、首页整合banner数据后端部分【创建banner微服务、接口、banner后台前端实现】 -谷粒学院
  19. 【附源码】计算机毕业设计SSM实验室耗材管理系统
  20. Typora中如何插入数学公式

热门文章

  1. 2019年web前端学习路线与前端书籍学习
  2. Windows下ARM Linux应用程序开发环境搭建说明
  3. RK3568三屏异显异触控技术案例
  4. C++设计模式之建造者模式(二)
  5. 使用Frida 实现 Hook 功能
  6. 大白鲨 LED 拆机
  7. AJAX框架衣柜设计师,9张衣柜设计,设计师真的是那么不堪吗?
  8. 湖南福米科技Java开发岗暑期实习面经
  9. 电磁继电器和固态继电器区别
  10. Vue使用画布Canvas实现刮刮乐