一文搞定UDP和TCP高频面试题!
副问题[/!--empirenews.page--]
本文转载自微信公家号「herongwei」,转载本文请接洽herongwei公家号。 谋事变口试,常常会被问到 UDP 和 TCP,本日给各人总结个中的焦点高频口试题,再有口试官问你相干的常识点,看这篇就够了! PS:文章有点长,请耐性阅读。 目次: 1、UDP 和 TCP 的特点与区别 2、UDP 、TCP 首部名目 3、TCP 的三次握手和四次挥手 4、TCP 的三次握手(为什么三次?) 5、TCP 的四次挥手(为什么四次?) 6、TCP 长毗连和短毗连的区别 7、TCP粘包、拆包及办理步伐 8、TCP 靠得住传输 9、TCP 滑动窗口 10、TCP 流量节制 11、TCP 拥塞节制 12、提供收集操作率 媒介 收集层只把分组发送到目标主机,可是真正通讯的并不是主机而是主机中的历程。传输层提供了历程间的逻辑通讯,传输层向高层用户屏障了下面收集层的焦点细节,使应用措施看起来像是在两个传输层实体之间有一条端到端的逻辑通讯信道。 1、UDP 和 TCP 的特点与区别 用户数据报协议 UDP(User Datagram Protocol) 是无毗连的,尽最大也许交付,没有拥塞节制,面向报文(对付应用措施传下来的报文不归并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通讯。 传输节制协议 TCP(Transmission Control Protocol) 是面向毗连的,提供靠得住交付,有流量节制,拥塞节制,提供全双工通讯,面向字节约(把应用层传下来的报文当作字节约,把字节约组织成巨细不等的数据块),每一条 TCP 毗连只能是点对点的(一对一)。 2、UDP 、TCP 首部名目 UDP 首部字段只有 8 个字节,包罗源端口、目标端口、长度、检讨和。12 字节的伪首部是为了计较检讨和姑且添加的。 TCP 首部名目比 UDP 伟大。 序号:用于对字节约举办编号,譬喻序号为 301,暗示第一个字节的编号为 301,假如携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。 确认号:祈望收到的下一个报文段的序号。譬喻 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 祈望下一个报文段的序号为 701,B 发送给 A 简直认报文段中确认号就为 701。 数据偏移:指的是数据部门间隔报文段起始处的偏移量,现实上指的是首部的长度。 节制位:八位从左到右别离是 CWR,ECE,URG,ACK,PSH,RST,SYN,FIN。 CWR:CWR 符号与后头的 ECE 符号都用于 IP 首部的 ECN 字段,ECE 符号为 1 时,则关照对方已将拥塞窗口缩小; ECE:若其值为 1 则会关照对方,从对方到这边的收集有阻塞。在收到数据包的 IP 首部中 ECN 为 1 时将 TCP 首部中的 ECE 设为 1; URG:该位设为 1,暗示包中有必要紧张处理赏罚的数据,对付必要紧张处理赏罚的数据,与后头的紧张指针有关; ACK:该位设为 1,确认应答的字段有用,TCP划定除了最初成立毗连时的 SYN 包之外该位必需设为 1; PSH:该位设为 1,暗示必要将收到的数据立即传给上层应用协议,若设为 0,则先将数据举办缓存; RST:该位设为 1,暗示 TCP 毗连呈现非常必需逼迫断开毗连; SYN:用于成立毗连,该位设为 1,暗示但愿成立毗连,并在其序列号的字段举办序列号初值设定; FIN:该位设为 1,暗示此后不再稀有据发送,但愿断开毗连。当通讯竣事但愿断开毗连时,通讯两边的主机之间就可以彼此互换 FIN 位置为 1 的 TCP 段。 每个主机又对对方的 FIN 包举办确认应答之后可以断开毗连。不外,主机收到 FIN 配置为 1 的 TCP 段之后不必顿时回覆一个 FIN 包,而是可以比及缓冲区中的全部数据都由于已乐成发送而被自动删除之后再发 FIN 包; 窗口:窗口值作为吸取方让发送方配置其发送窗口的依据。之以是要有这个限定,是由于吸取方的数据缓存空间是有限的。 3、什么是 TCP 的三次握手和四次挥手? TCP 是一种面向毗连的单播协议,在发送数据前,通讯两边必需在互相间成立一条毗连。所谓的“毗连”,着实是客户端和处事器的内存里生涯的一份关于对方的信息,如 IP 地点、端标语等。 TCP 可以当作是一种字节约,它会处理赏罚 IP 层或以下的层的丢包、一再以及错误题目。在毗连的成立进程中,两边必要互换一些毗连的参数。这些参数可以放在 TCP 头部。 TCP 提供了一种靠得住、面向毗连、字节约、传输层的处事,回收三次握手成立一个毗连;回收四次挥手来封锁一个毗连。 一个 TCP 毗连由一个 4 元组组成,别离是两个 IP 地点和两个端标语。一个TCP毗连凡是分为三个阶段:启动、数据传输、退出(封锁)。 当 TCP 吸取到另一端的数据时,它会发送一个确认,但这个确认不会当即发送,一样平常会耽误一会(提供收集操作率这部门有讲到)。 ACK 是累积的,一个确认字节号 N 的 ACK 暗示全部直到 N 的字节(不包罗 N)已经乐成被吸取了。这样的甜头是假如一个 ACK 丢失,很也许后续的 ACK 就足以确认前面的报文段了。 一个完备的 TCP 毗连是双向和对称的,数据可以在两个偏向上划一地活动。给上层应用措施提供一种双工处事。一旦成立了一个毗连,这个毗连的一个偏向上的每个 TCP 报文段都包括了相反偏向上的报文段的一个 ACK。 序列号的浸染是使得一个 TCP 吸取端可扬弃一再的报文段,记录以混乱序次达到的报文段。由于 TCP 行使 IP 来传输报文段,而IP 不提供一再消除可能担保序次正确的成果。 另一方面,TCP 是一个字节约协议,毫不会以混乱的序次给上层措施发送数据。因此 TCP 吸取端会被迫先保持大序列号的数据不交给应用措施,直到缺失的小序列号的报文段被填满。 4、TCP 的三次握手(为什么三次?) 三次握手: (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |