目录

TCP

三次握手

四次挥手

为什么建立连接是三次而断开连接是四次呢?

TCP和UDP的区别

TCP数据包的封装

UDP数据包封装

SCTP

SYN Flood泛洪攻击


TCP

TCP(Transmission Control Protocol) 传输控制协议,是面向连接的协议,属于OSI七层模型中的传输层协议

我们所熟知的FTP、SSH、Telnet、HTTP、HTTPS、SMTP、POP3等都是使用TCP协议

TCP最重要的一个特点就是面向连接的协议,一次TCP的会话连接需要三次握手,会话断开需要四次挥手

在分析三次握手和四次挥手前先看一下数据包交互过程中各信号代表着什么

(1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 

  (2)确认序号:Ack序号,占32位,当Ack=seq+1时,确认序号有效。 

  (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下: 

  (A)URG:紧急指针(urgent pointer)有效。 

  (B)ACK:确认序号有效。 

  (C)PUSH:接收方应该尽快将这个报文交给应用层。 

  (D)RST:重置连接。 

  (E)SYN(Synchronize Sequence Numbers):发起一个新连接。 

  (F)FIN:释放一个连接。 

需要注意的是: 

  (A)不要将确认序号Ack与标志位中的ACK搞混了。 

  (B)确认方Ack=发起方seq+1,两端配对。

三次握手

(1)第一次握手:Client将标志位SYN置为1,随机产生一个值 Seq=x,并将该数据包发送给Server,Client进入 SYN_SENT 状态,等待Server确认。 

  (2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,Ack=x+1,随机产生一个值 Seq=y,并将该数据包发送给Client以确认连接请求,Server进入 SYN_RCVD 状态。 

  (3)第三次握手:Client收到确认后,检Ack是否为 x+1,ACK是否为1,如果正确则将标志位ACK置为1,Seq=x+1,Ack=y+1,并将该数据包发送给Server,Server检查Ack是否为y+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED 状态,完成三次握手,随后Client与Server之间可以开始传输数据了


四次挥手

(1)第一次挥手:Client发送一个FIN,Seq=u,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。 

  (2)第二次挥手:Server收到FIN后,发送一个ACK=1给Client,确认序号Ack=u+1,Server进入CLOSE_WAIT状态。 

  (3)第三次挥手:Server发送一个FIN,Seq=w,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。 

  (4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK=1给Server,Ack=w+1,Seq=u+1,Server进入CLOSED状态,完成四次挥手。

为什么建立连接是三次而断开连接是四次呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你未必可以马上关闭SOCKET,也许你还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的

TCP和UDP的区别

  1. 基于连接与无连接
  2. TCP要求系统资源较多,UDP较少;
  3. UDP程序结构较简单
  4. 流模式(TCP)与数据报模式(UDP);
  5. TCP保证数据正确性,UDP可能丢包
  6. TCP保证数据顺序,UDP不保证

TCP数据包的封装

TCP段首部的定长部分为20个字节,即5个单位的长度

UDP数据包封装

SCTP

SCTP(Stream Control Transmission Protocol,流控制传输协议)是IETF(Internet Engineering Task Force,因特网工程任务组)在2000年定义的一个传输层(Transport Layer)协议,是提供基于不可靠传输业务的协议之上的可靠的数据报传输协议。SCTP的设计用于通过IP网传输SCN(Signaling Communication Network,信令通信网)窄带信令消息。后期广泛用于EPC网络中的S6a/S1/Sgs/Sv等接口中。

SCTP是一个面向连接的流传输协议,它可以在两个端点之间提供稳定、有序的数据传递服务。SCTP可以看做是TCP协议的改进,它继承了TCP较为完善的拥塞控制并改进TCP的一些不足之处

SYN Flood泛洪攻击

SYN Flood是当前最流行的DoS(拒绝服务攻击)之一,SYN攻击利用的是TCP的三次握手机制的缺陷,攻击端利用伪造的IP地址向被攻击端发出SYN请求,而被攻击端发出的ACK响应报文将永远发送不到目的地,也就是得不到回应,那么这个TCP连接就处于挂起状态,也就是所谓的半连接状态。服务器收不到确认的话,在SYN timeout时间内(一般为30秒-2分钟)还会重复发送ACK报文给攻击者,直到SYN timeout超时。如果有成千上万的这种连接,被攻击的主机资源将被耗尽,从而达到攻击的目的。

防御SYN Flood攻击

  • 降低SYN timeout时间,使得主机尽快释放半连接的占用
  • 采用SYN cookie设置,如果短时间内连续收到某个IP的重复SYN请求,则认为受到了该IP的攻击,丢弃来自该IP的后续请求报文
  • 合理地采用防火墙等外部网络安全设施

TCP的三次握手和四次挥手和UDP协议的更多相关文章

  1. TCP的三次握手与四次挥手

    TCP的三次握手与四次挥手 一.TCP(Transmission Control Protocol 传输控制协议) TCP是面向对连接,可靠的进程到进程通信的协议 TCP是提供全双工服务,即数据可在同 ...

  2. 你应该这么理解TCP的三次握手和四次挥手

    前言: TCP协议是计算机的基础,他本身是一个非常非常复杂的协议. 本文只是蜻蜓点水,将从网络基础以及TCP的相关概念介绍开始,之后再将三次握手,四次挥手这些内容来阐述. 最后介绍一些常见问题,并给出 ...

  3. TCP/IP三次握手与四次挥手的正确姿势

    0.史上最容易理解的:TCP三次握手,四次挥手 https://cloud.tencent.com/developer/news/257281 A 理解TCP/IP三次握手与四次挥手的正确姿势http ...

  4. TCP的三次握手与四次挥手详解

    TCP的三次握手与四次挥手是TCP创建连接和关闭连接的核心流程,我们就从一个TCP结构图开始探究中的奥秘  序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序 ...

  5. 【图解】给面试官解释TCP的三次握手与四次挥手-Web运用原理及网络基础

    作者 | Jeskson 来源 | 达达前端小酒馆 轻松了解HTTP协议 为什么要学习网络协议呢?为什么要学习计算机完了呢?显然这很重要,至少能够帮助你找到工作的原因之一,学习网络知识点太多太多,没有 ...

  6. TCP的三次握手与四次挥手笔记

    TCP的三次握手与四次挥手笔记 TCP Flags URG: 紧急指针标志 ACK:确认序号标志 PSH:push标志 RST:重置连接标志 SYN:同步序号,用于建立连接过程 FIN: finish ...

  7. TCP的三次握手与四次挥手理解及面试题

    TCP的三次握手与四次挥手理解及面试题(很全面) 转载自:https://blog.csdn.net/qq_38950316/article/details/81087809 本文经过借鉴书籍资料.他 ...

  8. TCP 的三次握手和四次挥手

    参考资料: 1.TCP的三次握手与四次挥手理解及面试题: 2.Http协议三次握手和四次挥手: 3.TCP通信的三次握手和四次撒手的详细流程(顿悟) 前置: 序号(也称序列号) - Sequence ...

  9. WireShark抓包分析以及对TCP/IP三次握手与四次挥手的分析

    WireShark抓包分析TCP/IP三次握手与四次挥手 Wireshark介绍: Wireshark(前称Ethereal)是一个网络封包分析软件.功能十分强大,是一个可以在多个操作系统平台上的开源 ...

随机推荐

  1. HDOJ-1257(贪心/动态规划)

    最少拦截系统 HDOJ-1257 我做这题的思路就是采用暴力或者贪心.也就是每次循环选出从第一个未被选择的元素开始,依次把后面可以选择的元素作为一个系统.最后统计可以有多少个系统. 还有人的思路就是利 ...

  2. HDOJ-4081(次小生成树+Prim算法)

    Qin Shi Huang's National Road System HDOJ-4081 本题考查的是次小生成树的问题,这里的解决方法就是先使用Prim算法求解最小生成树. 在求解最小生成树的时候 ...

  3. 基于4H-SIC的先进集成电路用n型LDMOS晶体管

    基于4H-SIC的先进集成电路用n型LDMOS晶体管 摘要: 通过对具有不同的设计方式的具有减小的表面电场的横向4H-SIC-N型-横向扩散金属氧化物半导体(LDMOS)晶体管进行测量和模拟,得到了得 ...

  4. Reincarnation Without New Body(RWNB): Basic Theory and Baseline 现世转生基本理论及简单操作

    Abstract 投胎学是一门高深的学问,不仅没有现存的理论,也没有过往的经验.根据种种猜测,投胎后前世的记忆也不能保留,造成了很大的不方便.在本文中,我们绕过了投胎需要"来世"的 ...

  5. 谈谈注册中心 zookeeper 和 eureka中的CP和 AP

    谈谈注册中心 zookeeper 和 eureka中的CP和 AP 前言 在分布式架构中往往伴随CAP的理论.因为分布式的架构,不再使用传统的单机架构,多机为了提供可靠服务所以需要冗余数据因而会存在分 ...

  6. 解决springMVC https环境 jstlview redirect时变为http请求的问题

    <property name="redirectHttp10Compatible" value="false" />

  7. weblogic之cve-2015-4852分析(重写)

    前言 有时间打算分析weblogic历史漏洞,但是又要面试啥的,没空.又刚好最近面试会问weblogic反序列化.具体啥时候分析weblogic反序列化,可能会在护网后,或者我开学了再分析.期间可能我 ...

  8. 用 Numba 加速 Python 代码

    原文出自微信公众号:Python那些事 一.介绍 pip install numba Numba 是 python 的即时(Just-in-time)编译器,即当你调用 python 函数时,你的全部 ...

  9. 在 .NET Core 中构建 REST API

    翻译自 Camilo Reyes 2020年8月26日的文章 <Build a REST API in .NET Core> [1] REST API 可以使用简单的动词(如 POST.P ...

  10. FIL怎么获得?FIL在哪里购买?

    从一些交易网站可以看到,FIL 这几天有一个比较大的涨幅,这让许多投资 FIL 的朋友大松一口气:FIL,你终于不装睡了.估计许多关注区块链的小伙伴看到消息又要问了:FIL 怎么获得?FIL 在哪里购 ...