[TCP/IP] TCP如何保证可靠性】的更多相关文章

1.数据包校验,发送方计算校验和,接收方结算校验和,进行对比2.应答机制,seq序列号与ack确认号 3.超时重传机制,发送后启动定时器,进行重传 4.连接管理,三次和四次5.对失序数据包重排序6.流量控制和拥塞控制,使用滑动窗口协商大小…
一:概述 - 由于 IP 的传输是无状态的,IP 提供尽力服务,但并不保证数据可以到达主机. - 所以,数据的完整性需要更上层的 传输层来保证.TCP和UDP 均属于 传输层. 二:UDP - 特点 - 不具有可靠性的数据报协议. - UDP 虽然可以确定发送消息的大小,却不能保证消息的到达. - 应用场景 - 即时通讯 - 包总量较少通讯 - 广播通信 三:TCP - 特点 - 面向连接的,可靠的流协议. - 流即为不间断的数据结构,虽然可以保证发送的顺序,但是还是犹如没有任何间隔的发送给服务…
概述 总结一下TCP中3次握手过程,以及其原生的缺陷 引起的SYN Flood的介绍 1.TCP连接建立--三次握手 几个概念: seq:序号,占4个字节,范围[0,4284967296],由于TCP是面向字节流的,在 一个1个TCP连接中传送字节流中国的每一个字节都按照顺序编号,此外序号是循环使用的 ACK: 仅当ACK=1时确认字段才有效,当ACK=0时确认字段无效,并且TCP规定,在连接建立后所有的传送报文段都必须要把ACK置为1 SYN:同步序列号,用来发起一个连接.当SYN=1而ACK…
TCP流和UDP数据报之间的区别 1.TCP本身是面向连接的协议,S和C之间要使用TCP,必须先建立连接,数据就在该连接上流动,可以是双向的,没有边界.所以叫数据流 ,占系统资源多 2.UDP不是面向连接的,不存在建立连接,释放连接,每个数据包都是独立的包,有边界,一般不会合并. 3.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证 UDP使用场景 1.需要资源少,在网络情况比较好的内网,或者对于丢包不敏感的应用.如DHCP协议就是基于UDP的.一般的获取IP地址都是内网请…
1.连接建立=>数据传输=>连接释放 2.主动发起连接的是客户端,被动接受连接的是服务器 3.三次握手 客户端 ==> SYN是1同步 ,ACK确认标志是0,seq序号是x ==> 服务器 客户端 <== SYN是1同步 ,ACK确认标志是1,seq序号是y,ack确认号是x+1 <==服务器 客户端 ==> ACK确认标志是1,seq序号是x+1,ack确认号是y+1 ==>服务器 4.为什么需要第三次握手再次确认,因为服务器需要确认客户端收到我的回复 5…
流量控制:数据的传送与接收过程当中很可能出现收方来不及接收的情况,这时就需要对发方进行控制,以免数据丢失.流量控制用于防止在端口阻塞的情况下丢帧,这种方法是当发送或接收缓冲区开始溢出时通过将阻塞信号发送回源地址实现的.流量控制可以有效的防止由于网络中瞬间的大量数据对网络带来的冲击,保证用户网络高效而稳定的运行. 1.通信双方主机上都分别有一个“发送窗口”和一个“接受窗口”2.TCP连接阶段,双方协商窗口尺寸3.发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认,等待确认机制4.…
linux内核中会维护两个队列:  1)未完成队列:接收到一个SYN建立连接请求,处于SYN_RCVD状态  2)已完成队列:已完成TCP三次握手过程,处于ESTABLISHED状态  3)当有一个SYN到来请求建立连接时,就在未完成队列中新建一项.当三次握手过程完成后,就将套接口从未完成队列移动到已完成队列.  4)backlog曾被定义为两个队列的总和的最大值,Berkely实现中的backlog值为上面两队列之和再乘以1.5. 5)如果当客户端SYN到达的时候队列已满,TCP将会忽略后续到…
MTU:最大传输单元,以太网的MTU为1500Bytes MSS:最大分解大小,为每次TCP数据包每次传输的最大数据的分段大小,由发送端通知接收端,发送大于MTU就会被分片 TCP最小数据长度为1460Bytes 这个跟具体传输网络有关,以太网的MTU为1500字节,Internet的MTU为576字节. MTU是网络层的传输单元,那么MSS = MTU - 20字节(IP首部) - 20字节(TCP首部).所以以太网的MSS为1460字节,而Internet的MSS为536字节. TCP最大负…
TCP 是支持全双工通信的传输层协议,为了开发出更好的网络通信应用,清楚了解其中的交互过程是非常必要的. 下面用比较直白的话来描述&理解一下这个过程: TCP 连接建立:三次握手 服务器依次调用 socket,bind,linsten 绑定到指定本机地址,accept 阻塞等待连接. 1. 客户端调用 socket 指定本地/网络地址,connect 主动建立连接,向服务器发送 SYN 同步请求,并标记该连接通道传送数据的初始序号为 J . 2. 服务器收到 SYN 请求后,响应 ACK(ack…
TCP服务端accept发生在三次握手之后 客户端socket()==>connect()==>write()==>read()服务端socket()==>bind()==>listen()==>accept()==>read()==>write() 1.accept过程发生在三次握手之后2.在调用listen函数之后,一个socket会从主动连接的套接字变为listen 套接字,accept后listen套接字变成连接套接字,listen继续接收更多连接3…