精华内容
下载资源
问答
  • 使用TCP协议有哪些?使用UDP的协议有哪些
    万次阅读
    2019-06-13 10:59:00

    使用TCP的协议有哪些?使用UDP的协议有哪些?

    运行于TCP协议之上的协议:

    HTTP协议:超文本传输协议,用于普通浏览

    HTTPS协议:安全超文本传输协议,身披SSL外衣的HTTP协议

    FTP协议:文件传输协议,用于文件传输

    POP3协议:邮局协议,收邮件使用

    SMTP协议:简单邮件传输协议,用来发送电子邮件

    Telent协议:远程登陆协议,通过一个终端登陆到网络

    SSH协议:安全外壳协议,用于加密安全登陆,替代安全性差的Telent协议

     

    运行于UDP协议之上的协议:

    DHCP协议:动态主机配置协议,动态配置IP地址

    NTP协议:网络时间协议,用于网络时间同步

    BOOTP协议:引导程序协议,DHCP协议的前身,用于无盘工作站从中心服务器上获取IP地址

     

    posted @ 2019-06-13 10:59 Y先森0.0 阅读( ...) 评论( ...) 编辑 收藏
    更多相关内容
  • 基恩士上位机TCP通讯协议,了这份协议就可以实现上位机TCP协议和基恩士PLC直接通信,不需要购买其他软件了!数据结构简单清晰,一目了然。
  • TCP协议大全

    千次阅读 2018-08-21 16:22:53
    上一篇文章已经讲过啦TCP/IP协议族了,大概多TCP协议有了大概的了解。 在网页中HTTP请求获取内容之前是需要先建立TCP连接的,而TCP建立连接需要三次握手,该篇文章将讲解TCP的工作原理。 TCP特性 TCP提供一种...

    Date: 2017-01-02 10:10:11

    TCP协议笔记

    上一篇文章已经讲过啦TCP/IP协议族了,大概多TCP协议有了大概的了解。
    在网页中HTTP请求获取内容之前是需要先建立TCP连接的,而TCP建立连接需要三次握手,该篇文章将讲解TCP的工作原理。

    TCP特性

    • TCP提供一种面向连接的、可靠的字节流服务
    • 在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP
    • TCP使用校验和,确认和重传机制来保证可靠传输
    • TCP给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复
    • TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制

    注意:TCP 并不能保证数据一定会被对方接收到,因为这是不可能的。TCP 能够做到的是,如果有可能,就把数据递送到接收方,否则就(通过放弃重传并且中断连接这一手段)通知用户。因此准确说 TCP 也不是 100% 可靠的协议,它所能提供的是数据的可靠递送或故障的可靠通知。

    TCP三次握手连接

    所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。
    三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect() 时。将触发三次握手。

    1. 客户端向服务器发送SYN报文(Seq=x, SYN=1),客户端进去SYN_SENT状态
    2. 服务器收到客户端的请求,向客户端回复一个确认信息(Ack = x + 1)和 一个SYN包(seq=y)建立连接请求,此时服务器进去SYN_RECV状态
    3. 客户端收到服务器的回复(SYN+ACK报文),向服务器端发送ACK,此包发送完毕后客户端和服务器端进入ESTABLISHED状态

    先看一下TCP的头部

    第一次握手

    第二次握手

    第三次握手

    为什么要三次握手而不是二次

    重点:主要目的防止server端一直等待,浪费资源

    1. 三次握手的目的是同步连接双方的序列号和确认号并交换TCP窗口大小信息。
    2. 两次握手可能因为丢包而出现死锁。

    客户端C发送请求,服务端S应答并分配资源(资源:由于不需要再次确认,这个时候服务端就会返回http请求的结果)。
    若S的应答没有到达C端,C认为连接未建立,而S认为建立了,S会在一段时间内保留分配的资源
    如果大量C这样请求,S会崩溃。

    注意:TCP握手之后,服务端接下来是要返回客户端的请求资源哦。如果在两次握手中,客户端不断的请求,就会导致服务端大量资源的量费。

    TCP四次挥手断开

    1. 客户端A发送位码为FIN=1,用来关闭客户A到服务器B的数据传送。此时A的状态为FIN_WAIT_1
    2. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。此时A为FIN_WAIT_2,B为CLOSE_WAIT
    3. 服务器B关闭与客户端A的连接,发送一个FIN给客户端A。此时A为TIME_WAIT,B为LAST_ACK
    4. 客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。此时A、B都关闭了,状态变为CLOSED。
      说明:关闭分为两部分,客户端发器关闭,服务端响应;服务端发器关闭,客户端响应。

    注意: 2,3阶段可以一起发送哦,如果2,3阶段一起发送,客户端A直接进入到TIME_WAIT状态,无须进入FIN_WAIT_2。
    2,3阶段分别发送的是ACK,FIN,如果服务端还有未传输完毕的数据就单独发送一个ACK应答客户端发送过来的FIN;等待传送完毕再发送一个FIN告诉客户段A服务端B也可以断开连接了。但是如果服务端在接受到客户端A的FIN时,已经传送完毕数据了,那就可以ACK,FIN一起发送了,没必要让客户端A进入FIN_WAIT2等候了。参考文献

    图中有个TIME_WAIT是干什么的?
    持续时间未2MSL,一个数据包在网络中的最长生存时间为MSL 。 假设最后客户端回复的ACK丢失,服务器端会在超时时间到来时,重传最后一个FIN包。
    ACK和FIN在网络中的最长生存时间就为2MSL,这样就可以可靠的断开TCP的双向连接。

    MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等。

    为什么建立连接需要三次握手,而断开连接需要四次握手

    为什么需要三次握手?
    为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
    client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。(和上面的例子差不多,两种不同的场景,都是客户端收不到或者不需要的情况下服务端还发送资源)

    为什么需要四次连接断开?
    因为客户端和服务端都需要一个FIN和ACK,当客户端发送了FIN包之后,处于半关闭状态,此时仍然可以接收数据包。
    在断开连接时,如果服务端收到FIN包,但此时仍有数据未发送完,此时就需要先向客户端回复ACK,告诉客户端我已经收到你的请求了。等到将剩下的数据都发送完之后,再向客户端发送FIN,断开发送方向的连接,因此很多时候FIN和ACK需要在两个数据包中发送,因此需要四次握手。

    超时重传和快速重传

    超时重传:当超时时间到达时,发送方还未收到对端的ACK确认,就重传该数据包。
    快速重传:当后面的序号先到达,如接收方接收到了1、 3、 4,而2没有收到,接收方就会立即向发送方重复发送三次ACK=2的确认请求重传。如果发送方连续收到3个相同序号的ACK,就重传该数据包,而不用等待超时。

    TCP之SYN攻击

    在三次握手过程中,服务器发送 SYN-ACK 之后,收到客户端的 ACK 之前的 TCP 连接称为半连接(half-open connect)。此时服务器处于 SYN_RCVD 状态。当收到 ACK 后,服务器才能转入 ESTABLISHED 状态.

    SYN 攻击指的是,攻击客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认。由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,导致目标系统运行缓慢,严重者会引起网络堵塞甚至系统瘫痪。SYN 攻击是一种典型的 DoS/DDoS 攻击。

    在 Linux/Unix 上可以使用系统自带的 netstats 命令来检测 SYN 攻击。

    防范措施:
    1、降低SYN timeout时间,使得主机尽快释放半连接的占用
    2、采用SYN cookie设置,如果短时间内连续收到某个IP的重复SYN请求,则认为受到了该IP的攻击,丢弃来自该IP的后续请求报文
    3、在网关处设置过滤,拒绝将一个源IP地址不属于其来源子网的包进行更远的路由

    TCP与UDP的区别

    • TCP是有连接的,两台主机在进行数据交互之前必须先通过三次握手建立连接;而UDP是无连接的,没有建立连接这个过程
    • TCP是可靠的传输,TCP协议通过确认和重传机制来保证数据传输的可靠性;而UDP是不可靠的传输
    • TCP还提供了拥塞控制、滑动窗口等机制来保证传输的质量,而UDP都没有
    • TCP是基于字节流的,将数据看做无结构的字节流进行传输,当应用程序交给TCP的数据长度太长,超过MSS时,TCP就会对数据进行分段,因此TCP的数据是无边界的;而UDP是面向报文的,无论应用程序交给UDP层多长的报文,UDP都不会对数据报进行任何拆分等处理,因此UDP保留了应用层数据的边界

    基于TCP协议与UDP协议

    • TCP: FTP、HTTP、Telnet、SMTP、POP3、HTTPS
    • UDP:DNS、SNMP、NFS

    TCP窗口滑动以及拥塞控制

    TCP协议在工作时,如果发送端的TCP协议软件每传输一个数据分组后,必须等待接收端的确认才能够发送下一个分组,由于网络传输的时延,将有大量时间被用于等待确认,导致传输效率低下。为此TCP在进行数据传输时使用了滑动窗口机制。
    TCP滑动窗口用来暂存两台计算机间要传送的数据分组。每台运行TCP协议的计算机有两个滑动窗口:一个用于数据发送,另一个用于数据接收。发送端待发数据分组在缓冲区排队等待送出。被滑动窗口框入的分组,是可以在未收到接收确认的情况下多送出的部分。滑动窗口左端标志X的分组,是已经被接收端确认收到的分组。随着新的确认到来,窗口不断向右滑动。
    TCP协议软件依靠滑动窗口机制解决传输效率流量控制问题。

    这部分没法模拟,所以只能复制粘贴。详情查看解说

    参考文章

    https://hit-alibaba.github.io/interview/basic/network/TCP.html
    http://blog.csdn.net/u012658346/article/details/51192944
    http://www.cnblogs.com/wulala1119/p/4749892.html
    http://blog.csdn.net/longwang155069/article/details/50058779

    展开全文
  • TCP协议和UDP协议

    万次阅读 多人点赞 2022-02-18 13:30:13
    1.1.2每一条TCP连接只能两个端点,每一条TCP链接只能是点对点的(一对一) 1.1.3TCP提供可靠交付的服务 可靠传输的工作原理 可靠传输的实现 流量控制 拥塞控制 1.1.4TCP提供全双工通信 1.1.5面向字节流 ...

    (注:本文部分摘自《计算机网络 谢希仁》)

    目录

    1.传输控制协议TCP

    1.1TCP的主要特点:

    1.1.1面向连接的运输层协议

    1.1.2每一条TCP连接只能有两个端点,每一条TCP链接只能是点对点的(一对一)

    1.1.3TCP提供可靠交付的服务

    1.1.4TCP提供全双工通信

    1.1.5面向字节流

    1.2与TCP有关的面试问题

    2.用户数据报协议UDP

    2.1UDP协议的主要特点:


     

    1.传输控制协议TCP

    1.1TCP的主要特点:

    1.1.1面向连接的运输层协议

    (1)TCP的连接

    TCP的许多特性都与TCP是面向连接的这个基本特性有关,因此要对TCP的连接有更清楚的了解。

    每一条TCP连接唯一地被通信两端的两个端点所确定,所谓的端点就是套接字(或插口)。

    套接字的表示方法:在点分十进制的IP地址后面写上端口号,例如IP地址是192.3.4.5,端口号是80,那么套接字就是(192.3.4.5:80) 。

    (2)TCP的连接建立

    三次握手:TCP建立连接的过程叫做握手,握手需要在客户端和服务器之间交换三个TCP报文段。此过程如下:

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Luf5ZCE,size_20,color_FFFFFF,t_70,g_se,x_16

    (3)tcp的连接释放

     四次挥手过程如下:

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Luf5ZCE,size_20,color_FFFFFF,t_70,g_se,x_16

    (4)tcp的有限状态机

    可以看我之前的这篇文章,这里不再赘述。

    TCP连接的状态——TIME_WAIT的存在意义https://blog.csdn.net/m0_54355780/article/details/121190546

    1.1.2每一条TCP连接只能有两个端点,每一条TCP链接只能是点对点的(一对一)

    1.1.3TCP提供可靠交付的服务

    (1)可靠传输的工作原理

    ①停止等待协议:

    “停止等待”就是每发送完一个分组就停止发送,等待对方确认。在收到确认后再发送下一个分组。

    • 无差错的情况下:一端发送,另一端等待并接收
    • 出现差错的情况:一端在一段时间(会设置有超时计时器)一直没有收到确认,认为自己刚发送的内容丢失,于是重新发送,这就叫超时重传。这里需要注意三点:第一,发送完自己的分组需暂时保留自己的副本,以防超时重传;第二,分组和确认分组要编号,从而确认哪些分组收到确认,哪些分组没有收到确认;第三,超时计时器设置的重传时间应当比数据在分组传输的平均往返时间长一些。
    • 确认丢失和确认迟到:  watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Luf5ZCE,size_20,color_FFFFFF,t_70,g_se,x_16
    • 信道利用率 

    3f1858d7441447c78a9f8c6eebc5714a.png

    等值等待协议的信道利用情况如下图:

     

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Luf5ZCE,size_20,color_FFFFFF,t_70,g_se,x_16

    为了提高效率,发送方可以不使用低效率的停止等待协议,使用流水线传输,流水线传输就是发送方可以连续发送多个分组,不必每发完一个分组就停下来等待对方的确认。

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Luf5ZCE,size_20,color_FFFFFF,t_70,g_se,x_16

    ②连续的ARQ协议

    连续ARQ协议规定:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。接收方采用累计确认的方式,也就是说:接收方不必对收到分组逐个发送确认,而是在收到几个分组之后,对按序到达的最后一个分组发送确认。

    (2)可靠传输的实现

    ①超时重传时间的选择

    报文段的往返时间RTT:采用自适应算法,记录一个报文段发出的时间,以及收到相应确认的时间。这两个时间之差就是RTT。

    平滑的往返事件RTTs:RTT的一个加权平均往返时间

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Luf5ZCE,size_20,color_FFFFFF,t_70,g_se,x_16

    上式的α值在RFC 6298推荐为0.125 。

    超时重传时间RTO:报文每重传一次,就把超时重传时间RTO增大一些,取新的重传时间为旧的重传时间的2倍。当不再发生报文段的重传时,才根据下面的式子计算超时重传时间。

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Luf5ZCE,size_20,color_FFFFFF,t_70,g_se,x_16

    ②选择确认SACK

    如果收到的报文没有差错,但是未按序号,中间还缺少一些数据,使用选择确认可以只传送缺少的数据而不重传已经确认到达接收方的数据。

    要使用选择确认,需在TCP首部的选项中加上“允许SACK”的选项,并且双方必须事先商定好。

    但是首部最长40字节,如果要报告5个字节块的边界信息,那么5个边界需要2*5*4=40个字节来表述,再加上一个字节指明SACK选项命令一个字节指明SACK占用多少字节,这就一共需要42字节,超出首部长度。因此大多数的实现还是需要重传全部的数据块。

    ③流量控制

    流量控制的目的:让发送方的发送速率不要太快,从而让接收方来的及接收

    • 滑动窗口:在 TCP 的报头中有一个字段叫做接收通告窗口,这个字段由接收端填充,是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。所以发送端就会有一个发送窗口,这个发送窗 口的大小是由接收端填充的接收通告窗口的大小决定的,并且窗口的位置会随着发送端数据 的发送和接收到接收端对数据的确认而不断的向右滑动,将之称为滑动窗口。(TCP的滑动窗口以字节为单位)watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Luf5ZCE,size_20,color_FFFFFF,t_70,g_se,x_16p3-p1=A的发送窗口;p2-p1=已发送但尚未收到确认的字节数;p3-p2=允许发送但尚未发送的字节数。此外,需要注意的是,并不是发送方将数据直接发给接收方,而是发送方的应用进程把字节流写入TCP的发送缓存,发送缓存用来暂时存放发送应用程序传送给发送方TCP准备发送的数据以及TCP已发送出但尚未收到确认的数据。接收方的应用进程从TCP的接收缓存中读取字节流,接收缓存用来暂时存放按序到达但尚未被接收应用程序读取的数据以及为按序到达的数据。最后在滑动窗口的部分知识中需要注意三点:第一,同一时刻,发送方的发送端口并不总是和接收方的接收窗口一样大,其会根据网络拥塞情况适当减少自己的窗口值;第二,不按序到达的数据,先临时存放在接收缓存中,等到缺少的字节收到后,再按序交付给上层的应用进程;第三,TCP接收方要有累计确认的功能。
    • TCP的传输效率:TCP报文段的发送时机有三个控制机制:第一种,缓存中存放数据达到MSS(最大报文段长度)字节时,就组装成一个TCP报文段发送;第二种,发送方应用进程指明要求发送报文段;第三种,发送方的一个计时期限到了,就把当前已有 缓存数据并且<=MSS装入报文段发送出去。

    ④拥塞控制

    • 满开始:由小到大逐渐增大拥塞窗口数值。
    • 拥塞避免:为了防止拥塞窗口增长过大引起网络拥塞,设置慢开始门限。然后拥塞避免的算法思路就是让拥塞窗口缓慢增大,即每经过一个往返时间RTT就把发送方的拥塞窗口加一。
    • 快速重传:接收方不要等待中积极发送数据的时候再进行对之前数据的捎带确认,而是收到数据立即发送确认。快重传算法规定:发送方一连收到三个重复的确认,就应当进行快重传。
    • 快速恢复:当出现超时的时候,不启动慢开始,而是执行快恢复算法。发送方调整门限值=出现超时的cwnd(拥塞窗口)/2。watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Luf5ZCE,size_20,color_FFFFFF,t_70,g_se,x_16

     

    1.1.4TCP提供全双工通信

    1.1.5面向字节流

    流式服务的特点:TCP 字节流的特点,发送端执行的写操作次数和接收端执行的读操作次数之间没有任何数量关系,应用程序对数据的发送和接收是没有边界限制的。

    1.2与TCP有关的面试问题

    (1)为什么时三次握手,可不可以是两次握手,为什么?

    如果是两次握手,那么如果出现这种情况:发送端发送请求连接报文,但是由于在网络中出现了滞留并没有按时到达接收端,等到一段时间发送端再次发送连接请求报文,接收端接收之后并发送确认连接。这样两次握手建立连接1。但是之前在网络中滞留的连接请求报文并没有丢失,于是发送给接收端,接收端误以为建立连接,于是就回复确认建立连接,所以此时又建立了连接2,但是发送端并不会给连接2发送数据,所以接收端一直处于等待,就会浪费接受端许多资源。

    三次握手也可以是四次握手:接收端在回复确认建立连接报文的时候,将其分成两个报文段,一个是回复对发送端的连接确认,一个是发送自己的同步报文段。

    (2)三次握手时可能出现什么攻击?

    可以参考下面这篇文章:

    TCP三次握手有哪些漏洞?https://www.cnblogs.com/HuiH/p/12599048.html可能出现的攻击有三种:SYN flood的攻击,TCP全连接攻击,Land攻击。

    (3)四次挥手的过程可以用三次完成吗?

    关闭连接时,服务器端收到FIN报文,并不会立刻关闭SOCKET,先回复ACK报文,等到服务器端的所有报文都发送完了,才发送FIN报文。所以不能三次完成,将ACK和FIN不能放在一起发送。

    (4)对于三次握手四次挥手的面试题,可以看看这个文章

    面试官,不要再问我三次握手和四次挥手https://zhuanlan.zhihu.com/p/86426969

    (5)同一个端口可不可以被一个 TCP 和一个 UDP 的应用程序同时使用?

    可以。原因是端口的唯一性标识是:端口号+协议名称。所以TCP和UDP的端口完全没有任何关系,协议内部端口号唯一。

    追问:程序在连接到端口时,怎么知道此时从该端口进来的数据是tcp的还是udp的呢?

    操作系统根据接收的IP数据包的首部内的8位协议来判断这是什么报文,从而直接交给相关的内核进程或者协议栈处理。

    追问:一个端口是否可以绑定多个端口号?

    可以。一个进程可以打开多个文件描述符,每个文件描述符对应一个端口号,所以一个进程可以绑定多个端口号。Linux会给每个socket分配一个唯一的文件描述符,通过这个文件描述符来区分对应的套接字。

    追问:一个端口号是否可以被多个进程绑定?

    不可以。但是在父子进程中可以实现多进程绑定一个端口号,因为子进程具有父进程的文件描述符副本,可以处理绑定到同样的端口上的连接

    追问:一个端口可以同时连接多个TCP和多个UDP吗?

    一个端口可以建立多个TCP连接,所谓的同一个端口是指服务器端的ip和port不变,但是只要客户端的ip和port不同就可以。一个端口同一时间只能绑定一个socket。UDP是面向无连接的,所以不存在多个UDP连接,只是服务端接收UDP数据需要绑定一个端口,一个socket只能绑定一个端口而已。

    (如果还不是很清楚这方面的问题,可以参考下面几篇文章)

    TCP和UDP使用同一端口通信https://blog.csdn.net/szm1234/article/details/116994450一个端口号可以同时被两个进程绑定吗?https://zhuanlan.zhihu.com/p/280672302#:~:text= 由上述结果可知:TCP、UDP可以同时绑定一个端口8888,但是一个端口在同一时刻不可以被TCP或者UDP绑定2次。,原因如下: TCP和UDP传输协议监听同一个端口后,接收数据互不影响,不冲突。快狗二面 一个端口可以 同时TCP 又UDP 吗?https://cloud.tencent.com/developer/article/1813256

    (6)同一个应用程序可以创建多个套接字吗?

    端口是唯一的,系统中任一个端口只能被一个程序占用。一个程序可以创建多个Socket,但多个Socket是不能共用端口的。

    (7)什么是 TCP 粘包,如何解决?

    定义:指的是多个报文数据内容融合在一起被接受

    解决方案:

    ①循环接收、发送;即就是一次send,一次recv……

    ②设置分割标志。

    ③在头部加上长度控制,然后读取的时候只读取头部信息中指定的长度。

    (8)为什么UDP数据包不发生粘包,而TCP会出现粘包?

    TCP协议是面向链接的,收发两端都必须要有成对的socket,因此发送端为了将多个发往接收端的包更有效的发送,使用了优化的方法nagle算法。

    面向流的服务是没有消息保护边界的。

    UDP协议是无连接,面向消息的,支持一对多的模式,所以接收端的套接字缓冲区采用链式结构记录每一个到达的UDP包。

    面向消息的通信是由消息保护边界的。

    (9)如果接收端填充的接收通告窗口为 0,发送端接下来怎么处理?

    接收端通告的窗口大小变成0,发送端会发一个1字节的段,这一个字节段可以是下一字节的数据,如果没有新的数据段发送的时候,就发一个ack,强制接收端重新宣告下一个期望的字节和窗口大小。如果接收方回复窗口大小仍然为零,则发送方的探测定时器加倍。没有收到ACK时,发送探测包的最大次数之后连接超时。

    (10)什么叫糊涂窗口综合征?

    糊涂窗口综合症是指当发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之;就会使应用进程间传送的报文段很小,特别是有效载荷很小; 极端情况下,有效载荷可能只有1个字节;传输开销有40字节(20字节的IP头+20字节的TCP头) 这种现象。

    要解决这个问题,发送方要把数据累计成足够大的报文段,等到其到达接收方缓存区的一半大小,再发送报文。接收方等待一段时间,使得自己的接收缓存区中能够容纳一个最长的报文段或缓存区有一半空闲,然后再去发送确认报文。

    (11)在 TCP 的实现中广泛使用的 Nagle 算法是什么?

    若发送应用进程,把要发送的数据逐个字节的送到TCP的发送缓存,则发送方就把第一个数据字节先发送出去,把后面的数据字节都缓存起来。当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个发送报文段发送出去。

    (12)TIME_WAIT 状态存在的原因?

    ①保证发送端发送的最后一个ACK报文段能够到达接收端,从而避免接收端因为收不到ACK报文段而不按照正常步骤进入CLOSED状态。

    ②使本链接持续的时间内所产生的所有报文都从网络中消失,避免下一个新连接中出现旧的连接请求报文段。

    2.用户数据报协议UDP

    2.1UDP协议的主要特点:

    (1)UDP是无连接的,可以减少开销和发送数据之前的时延。

    (2)UDP使用尽最大努力交付,不保证可靠交付,主机不需要维持复杂的连接状态表。

    (3)UDP是面向报文的,一次交付一个完整的报文。

    (4)UDP没有拥塞控制,因此网络出现的拥塞不会使得源主机的发送速率降低。

    (5)UDP支持一对一、一对多、多对一、多对多的交互通信。

    (6)UDP的首部开销小,只有八字节。

     

     

     

    展开全文
  • TCP协议是什么,TCP协议适用场景

    千次阅读 2022-01-25 10:08:16
    TCP协议的特点: 1.TCP协议是一种面向连接的,可靠的字节流服务。在进行数据传输之前必须建立连接,就比如打电话,只有在对方接通后才能开始对话。建立连接的方法是“三次握手”。 2.可靠性高。在TCP的

    TCP中文名:传输控制协议(Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的传输层通讯协议,由IETF的RFC 793定义。应用程序在使用TCP之前必须先建立TCP连接。TCP通过校验、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。
    TCP协议的特点:
    1.TCP协议是一种面向连接的,可靠的字节流服务。在进行数据传输之前必须建立连接,就比如打电话,只有在对方接通后才能开始对话。建立连接的方法是“三次握手”。
    2.可靠性高。在TCP的传输中,当数据到达接受主机时,接受段主机返回一个已收到的通知,这就叫确认应答。但若在一定时间内没有收到确认应答,发送段会认为数据丢失,重新发送数据。
    3.流量控制。数据通信双方的发送能力和接受能力不一定完全匹配,如果发送方发送速率过快,会导致接收方处理不过来,这时候接收方只能吧处理不过来的数据存在缓存区里。TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口大小控制拥堵。
    4.TCP是只支持一对一,仅有两方之间通信,不像UDP那样支持一对多或多对多,所以TCP提供不了广播和多播的功能。
    5.面向字节流。TCP不像UDP那样一个个报文独立的传输,而是在不保留报文边界的情况下以字节流方式进行传输。
    6.首部最小20字节,最大60字节。

    TCP协议适用于要求可靠传输的应用,例如文件传输,网络数据库,分布式高精度计算系统的数据传输。

     

    展开全文
  • tcp协议的主要功能_tcp协议的特点

    千次阅读 2021-06-28 04:02:35
    传输控制协议(TCP,TransmissionControlProtocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的...
  • 什么是TCP协议?

    千次阅读 2021-08-08 09:51:00
    什么是TCP协议TCP协议是传输控制协议,位于应用程序层和网络层之间,用于提供可靠的流传递服务,即以字节流的形式传递数据,也以字节流的形式接收数据。TCP使用确认机制检查数据的安全和声音到达,在发送方执行多...
  • TCP协议详解

    千次阅读 2022-03-30 22:15:54
    传输层协议主要两个:TCP协议和UDP协议 相较于UDP,TCP协议的特点是:面向连接、字节流、可靠传输 过程: 1.双方首先进行,需要为连接分配必要的内核资源,管理连接状态和数据传输 2.双方读写都是通过同一个连接...
  • UDP协议和TCP协议

    千次阅读 2022-02-19 21:22:31
    TCP对比:不可靠、无连接、面向报文 1. 网络的基本情况就是不可靠的 没有谁能保证数据一定是可以发送到对方的,可能丢失(丢包) 即使数据发送给对方了,也不能保证数据就是无差错的(不考虑人故意修改数据的...
  • TCP协议详解 (史上最全)

    万次阅读 多人点赞 2021-03-08 12:27:36
    物理网络之间通过路由器进行互连,随着增加不同类型的物理网络,可能会很多个路由器,但是对于应用层来说仍然是一样的,TCP协议栈为大家屏蔽了物理层的复杂性。总之,物理细节和差异性的隐藏,使得互联网TCP/IP...
  • tcp协议和udp协议区别TCP and UDP are two protocols that are part of the transport layer in a TCP/IP model of data transmission. Both share the same core function – transmitting data packets from the ...
  • TCP协议的特点

    千次阅读 2021-02-04 16:04:37
    TCP6大特点 1. 基于连接的 // 数据传输之前需要建立连接 2. 全双工的 // 双向传输(客户端可以向服务器端传数据,服务器端也可以向客户端传数据) 3. 字节流 // 不限制数据大小,打包成报文段进行传输,保证有序接收,...
  • TCP/IP协议簇中的主要协议及其主要用途
  • TCP 协议(包含三次握手,四次挥手)

    万次阅读 多人点赞 2022-01-04 18:08:48
    TCP 特性1.确认应答 (可靠传输的最核心机制) 1.确认应答 (可靠传输的最核心机制) 可靠传输的最核心机制
  • 太厉害了,终于人能把TCP/IP 协议讲的明明白白了

    万次阅读 多人点赞 2020-05-07 09:30:15
    OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。 二、 TCP/IP 基础 1. TCP/IP 的具体含义 从字面意义上讲,人可能会认为...
  • 一、基于TCP的应用层协议有:SMTP、TELNET、HTTP、FTP 基于UDP的应用层协议:DNS、TFTP(简单文件传输协议)、RIP(路由选择协议)、DHCP、BOOTP(是DHCP的前身)、IGMP(Internet组管理协议) ...
  • 剖析 TCP协议内部结构

    千次阅读 2022-03-17 08:41:22
    1、TCP协议 2、组成结构分析 1、源端口号:发送方端口号 2、目的端口号:接收方端口号 3、序列号:报文段的数据的第一个字节的序号 3、确认序号:期望收到对方下一个报文段的第一个数据字节的序号 4、首部长度(数据...
  • 西门子PLCTCP通讯协议

    2015-08-27 12:04:51
    西门子PLC协议对于开发人员帮助很大,PLC——TCP协议中规定了初始化字、读写操作数据帧格式等
  • 计算机网络 | 一文搞懂什么是TCP/IP协议

    万次阅读 多人点赞 2019-10-28 12:48:16
    什么是TCP/IP协议? 计算机与网络设备之间如果要相互通信,双方就必须基于相同的方法.比如如何探测到通信目标.由哪一边先发起通信,使用哪种语言进行通信,怎样结束通信等规则都需要事先确定.不同的硬件,操作系统之间的...
  • 参考:https://zhidao.baidu.com/question/337954440.html 基于TCPFTP、Telnet、SMTP、HTTP、POP3与DNS 基于UDP的TFTP、SNMP与DNS 其中DNS既可以基于TCP,也可以基于UDP。
  • 网络通讯之TCP协议实用案例

    千次阅读 2021-12-30 21:23:48
    文章目录前言一、TCP协议是什么?二、Qt中实现TCP网络通信流程1.创建两个类2.TCP通信过程三、代码讲解1、服务器端cpp文件代码2、客户端cpp文件代码四、程序演示 前言 在日常IT领域内,socket网络编程是非常重要的...
  • TCP协议特点

    千次阅读 2020-09-14 15:05:01
    TCP是面向连接的运输层协议 每一条TCP连接只能两个端点(endpoint),点对点 TCP提供可靠交付的服务,无差错、不丢失、不重复,并且按序到达 TCP提供全双工通信(双向通信) 面向字节流。‘面向字节流’的含义是:...
  • TCP/IP 计算机与网络设备之间如果要相互通信, 双方就必须基于相同的规则(例如由哪一方先发起通信, 使用哪种语言进行通信, 怎样发送...传输层两个传输协议TCP (传输控制协议) 和 UDP (用户数据报协议)。 传输控制协
  • 使用Wireshark抓包分析TCP协议

    千次阅读 2022-04-17 10:04:06
    这一层用到了TCP协议 tcp包头 每个字段对应的TCP包头 TCP握手过程分析 TCP三次握手示意图 第一次握手:客户端向服务器发送一个SYN段(表示发起连接请求),并且包含客户端的一个初始序列号seq。 第二次...
  • http协议与tcp协议区别

    千次阅读 2021-06-15 21:47:51
    http协议与tcp协议区别 1、性质不同: http是一个简单的请求-响应协议。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。 2、连接不同: TCP连接到不同但互连的计算机通信网络的主计算机中的成对进程之间...
  • TCP和UDP协议的区别以及原理

    千次阅读 2022-03-31 09:57:30
    TCP和UDP协议的区别以及原理 最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结。 一、作用 首先:tcp和udp都是工作再传输层,用于程序之间传输数据的。数一般包含:文件类型,视频类型,jpg图片等。 二...
  • 五分钟读懂TCP 协议——TCP协议简介

    万次阅读 多人点赞 2017-06-11 23:48:03
    TCP 是互联网核心协议之一,本文介绍它的基础知识。一、TCP 协议的作用互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。(图片说明:TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 806,565
精华内容 322,626
关键字:

属于tcp协议有哪些