当前位置: 首页 >> 基本常识
人气推荐
关于TCP协议的面筋整理
  
  来源: www.zztaida.com.cn 点击:1655

TCP和UDP的特点和区别,分别适用于

features

TCP的场景:面向连接、面向字节流、提供拥塞控制、全双工、一对一通信、高报头开销(固定报头20字节)、提供可靠的传递服务

UDP:无连接、面向消息、无拥塞控制、支持一对一、一对多、多对一和多对多交互模式、低报头开销(只有8字节)、相同部分不可靠、延迟小和实时性强然而,UDP是无连接的,在发送数据之前没有必要建立一个面向连接的连接服务。在通信之前,双方应该首先在他们之间建立一个完整的通信通道(TCP三次握手建立一个连接),并且双方应该为该连接分配内核资源。在通信过程中,在非面向连接的服务中,始终可以实时监控和管理整个连接情况。不需要预先在两个通信节点之间建立连接。当需要通信时,发送节点可以向网络发送信息,允许信息在网络上自主传输。通常,在传输过程中不会对其进行监控。

TCP提供可靠的服务,即通过TCP连接传输的数据无错、不丢失、不重复、按顺序到达;UDP仅尽可能地传送,不保证可靠性[可能的数据包丢失,不保证顺序]

TCP是面向字节的;UDP仅适用于点对点的网段

TCP连接,而UDP支持一对一、一对多、多对一和多对多的交互模式

TCP数据传输速度慢。UDP数据传输速度快

TCP报头开销大;UDP报头开销小

TCP逻辑通信是全双工可靠通信;UDP是不可靠的通信

UDP没有拥塞控制,并且网络拥塞不会降低源主机的传输速率。

说说OSI七层模型,哪一层是TCP协议?“开放系统互连七层协议”是一个开放的通信系统互连参考模型和一个定义明确的协议规范。根据不同的功能和不同的分工,它分为七层。物理层:为上层协议传输数据

2提供可靠的物理介质。数据链路层:为网络层提供可靠的数据传输。[角色:物理地址寻址、数据帧、流控制、数据错误检测和重传]

适用于需要可靠传输的应用(eg:文件传输)

说说OSI七层模型,哪一层是TCP协议?“开放系统互连七层协议”是一个开放的通信系统互连参考模型和一个定义明确的协议规范。根据不同的功能和不同的分工,它分为七层。物理层:为上层协议传输数据

UDP适用于实时应用(eg:进行视频聊天或观看直播,因为即使丢失了几张图片,对用户的影响也不大)

说说OSI七层模型,哪一层是TCP协议?“开放系统互连七层协议”是一个开放的通信系统互连参考模型和一个定义明确的协议规范。根据不同的功能和不同的分工,它分为七层。物理层:为上层协议传输数据

2提供可靠的物理介质。数据链路层:为网络层提供可靠的数据传输。[角色:物理地址寻址、数据帧、流控制、数据错误检测和重传]

3。网络层:负责在子网之间路由数据包。此外,网络层还可以实现拥塞控制、互联网互联等功能,如[实现两个终端系统之间的透明数据传输,包括寻址和路由、连接建立、维护和终止]

4。传输层负责对上层数据进行分段,并提供端到端、可靠或不可靠的传输,以及端到端错误控制和流量控制问题。[根据通信子网的特点,充分利用网络资源,提供建立、维护和取消两个终端系统的会话层之间传输连接的功能,并负责端到端的数据传输]

5。会话层:管理主机之间的会话进程,并负责建立、管理和终止进程

6之间的会话。表示层:转换上层数据/信息,以确保一台主机的应用层信息可以被另一台主机的应用程序理解。数据转换包括数据加密、压缩和

7格式转换。应用层:操作系统/网络应用程序访问网络服务的接口

事实上,这七层只是一个七层模型,人为地划分,以便于讨论和理解协议的细节。每一层实现自己的功能和协议,并完成与相邻接口的通信。OSI的服务定义规定了每一层提供的服务。某一层的服务是该层及其下的层的能力,

(网络层)解决计算机之间的通信问题。

主要是关于不同硬件平台、不同网络产品和不同操作系统之间的兼容性,以及不同类型的计算机网络之间的互连。

流量控制:解决接收端接收不如发送端发送快的问题。

三次握手,四波的流动、状态和功能?

三次握手

客户端调用connect并首先发送一个SYN子部分,告诉服务器客户端连接中要发送的数据的初始序列号。当进入sys_sent状态

时,服务器接收到这个同步,它将返回一个ASK并同时发送它自己的同步。当进入sys_rcvd状态

时,客户端从服务器接收SYN,它将发送一个ASK。此时,TCP连接建立,客户端进入建立状态

服务器在接收到ASK后也进入建立状态,双方可以开始通信。

口语解释:

1。对于连接

2,a适用于b。乙对甲说我准备好了。甲对乙说我准备好了(甲已经进入连接状态,乙听到后已经进入连接状态)

四波

主动调用关闭功能的一方是主动关闭端,而(客户端)进入FIN_WAIT状态。另一侧是被动关闭端。

主动关闭终端发送FIN子部分,被动关闭终端接收该子部分并发送ASK响应。客户端进入FIN_WAIT2状态,服务器进入close_WAIT状态

被动关闭方接收到文件终止符的应用程序也将调用close来关闭套接字并同时发送FIN子部分。当服务器进入最后确认状态时,主动关机方接收到确认信息,将发送确认响应。服务器将在收到确认后立即关闭,客户端将进入时间等待状态,并在2MSL时间

1后关闭。向乙方申请断开

2。说好的,我可以告诉你我什么时候可以断开

3。乙告诉甲,我准备断开

4。答:是,断开(B将直接进入关闭状态,A将等待2MSL确认没有更多数据要报告,然后关闭)

为什么是三次握手,为什么是第三次?为什么序列是随机值?

三次握手的必要性

在建立连接的过程中,由于网络拥塞或其他原因,服务进程第一次没有收到连接请求,并且在某个时间延迟到达服务进程。此时,连接请求实际上已经无效。如果没有三次握手,当客户端进程接收到连接请求时,它会错误地认为客户端进程发出了新的连接请求,因此服务进程会像客户端进程一样发出确认消息,并同意建立连接。只要服务流程发出确认信号,就会建立新的连接。由于连接建立请求实际上已经变得无效,并且客户端进程没有发出新的连接请求,因此客户端进程此时处于关闭状态,因此服务进程的确认信号将不对应。客户端进程是否发出新的请求可以通过三次握手服务进程是否存在来判断,从而避免错误建立连接的情况。

为什么序列号是一个随机值

为了防止SOCKETT在连接失败后被重复使用,从而导致以前数据包的错误接收

安全性:目前,对tcp会话的攻击主要分为中间人攻击和注入攻击。前者是改变双方的通信过程,接管整个tcp会话。后者不改变通信双方之间的通信,只在会话中插入一些伪装成IP的tcp数据包,解决了预测接收序列号的技术问题。这种序列号预测也是最大的困难。因此,从安全性的角度来看,TCP序列号的初始值越接近随机值,算法越复杂越好。

滑动窗口协议:一种流量控制方法。一种可以提高吞吐量的方法。该协议允许发送方在停止并等待确认之前连续发送多个数据包。发送方不必在每次发送数据包时都停止等待确认,因此协议可以加速数据传输。即允许发送者在接收任何回复之前发送额外的分组。听筒电话

由接收器通告的窗口被称为提供的窗口,其覆盖从第4字节到第9字节的区域,指示接收器已经确认了包括第3字节的数据,并且通告的窗口的大小是6。窗口大小对应于确认号。发送方计算其可用窗口,该窗口指示可以立即发送多少数据。

接收器确认数据后,此滑动窗口会不时向右移动。窗口两边的相对移动会改变窗口的大小。

窗口边缘的移动:

我们用三个术语来描述窗口左右边缘的移动:

我们称窗口的关闭为窗口左右边缘的接近。发送和确认数据时会出现这种现象。

当窗口的右边缘向右移动时,将允许发送更多的数据,我们称之为窗口打开。当另一端的接收进程读取确认的数据并释放TCP接收缓冲区时,会出现这种现象。

当右边缘向左移动时,我们称之为窗口收缩。主机要求RFC强烈建议不要使用这种方法。然而,TCP必须能够在一端处理这种情况。

根据发送和接收滑动窗口的大小,滑动窗口协议可分为停止等待协议、返回N帧协议和重传协议。

停止等待协议

发送方和接收方的滑动窗口大小均为1。发送的每一帧都被停止,等待接收方的确认。对帧进行编号只需要1位:如果有连续的相同帧号,发送方将重新发送数据帧。

反向N帧协议

发送方和接收方的滑动窗口大小都大于或等于1。当接收方在某一帧中检测到错误时,它要求发送方在错误帧之后重新发送该帧。或者,当接收方没有接收到某个帧时,它不会向发送方发送确认消息,发送方会在一段时间后重新发送该帧。请注意,当帧号为0~N时,假设滑动窗口大小为N,最大滑动窗口为N-1[,当发送方连续发送N个数据帧时,如果接收方接收到数据帧,而发送给发送方的所有确认帧都丢失了,则接收方无法判断是发送了新帧还是重传了旧帧。]

选择重传协议

发送方和接收方的滑动窗口大小都大于或等于1。与反向N帧协议不同,发送方只重传接收方需要重传的超时数据帧。当帧数为N时,接收窗口和发送窗口的最大值为N/2,以保证接收方能够识别新帧和重传的旧帧。[假设发送方的发送窗口大于N/2,并且发送方的确认帧丢失,接收方无法确定接收到的下一个具有相同编号的帧是新帧还是旧帧]

注意:由于窗口的左边缘受从另一端发送的确认序列号控制,因此无法向左移动。如果接收到指示窗口左边缘向左移动的确认,则认为是重复的确认,并将其丢弃。

如果左边缘到达右边缘,它被称为零窗口,发送方此时不能发送任何数据。

你为什么挥四次手,为什么挥第四次手?

在四个波期间,段3包含段2中的确认值,因此三个波可以合并段3和段2,但是这种合并是有问题的。被动关闭方发送的消息段2仅确认主动关闭方发送的结束消息段,但这并不意味着它自己的数据已经被传输。也就是说,当连接断开时,一个方向上的断开仅意味着该方向上的数据已经被传输,并且可能存在另一个方向上的数据。因此,在另一方向上的数据被传输之前,三次握手无法实现。然而,这个时间是不确定的,因此导致活动结束方的结束消息随着时间的推移而被重传,而长时间没有响应,等等。这导致了不必要的资源浪费和更多意想不到的问题。

时间等待状态何时出现,时间等待的功能,以及如何解决大量的时间等待?

TIME _ WAIT主动关机]:等待足够的时间以确保远程传输控制协议收到连接中断请求的确认。

客户端在接收后进入此状态

在四波中解决“大量时间等待解决”关闭等待状态的原因?

CLOSE_WAIT被动关闭]:服务器接收来自客户端的连接中断请求,响应对方的确认,同时进入CLOSE _ WAIT状态。

友情链接:
普宁门户网 版权所有© www.zztaida.com.cn 技术支持:普宁门户网 | 网站地图