TCP和UDP相关概念
位于传输层的协议,都是基于IP协议的。
TCP是面向连接的、可靠的传输,UDP是无连接的、不可靠的传输。要进行TCp传输时候,需要进行三次握手,建立连接,然后才能发送数据,而且在发送过程中,有数据的确认和重传机制,因此TCP适用于传输大量数据,而且要求传输质量的长和;UDP没有上述繁琐的步骤,它直接向指定的主机的端口发送数据,不用建立连接,而且在发送的过程中也不管对方是否收到数据,因此UDP适用于一次传输少量数据,不要钱传输质量的场合。因此UDP比TCP更快。
TCP三次握手:
a) Client发送SYN数据包,SYN=1,seq=X请求Server的响应;
b) Server发送SYN+ACK数据包ACK=X+1,SYN=1,seq=Y,确认client的请求,同时发送自己的SYN包;
c) Client收到SYN+ACK数据包,知道自己的请求已经被允许,则发送一个ACK数据包对Server发送的SYN数据包进行确认ACK=Y+1, seq=Z;
SYN攻击:在TCP三次握手中,Server发送了SYN+ACK包之后,client并没有发送ack包之前的这段时间,这个握手被称为半连接。此时Server会进入SYN_RECV,当收到client的ack包之后,才会进入established状态,握手才完成。SYN攻击就是利用这一点,使用大量不存在的IP地址发送SYN包给Server,此时Server的连接队列会存在大量的半连接,等待客户端发送ack包,由于client的ip地址是伪造的,所以Server会一直重发,要求客户确认,这就会占用Server的大量系统资源,使得Server服务变慢甚至宕机,造成新的正常连接无法进行。这是一种典型的DDOS攻击。
TCP四次断开,TCP连接断开可以任一方发起的,总共需要四次握手,具体过程如下:
a) 主动方发送fin+ack+syn数据包(fin=1,seq=X,ack=Y),要求结束连接;
b) 被动方收到fin数据包,对其进行确认(ack= X +1,seq= Y+1),说明收到了主动方的fin数据包。此时主动方就不能在给被动方发数据了,关闭了了一半的链接;
c) (可省略)被动方还有数据要发送给主动方,则会继续发送(ACK=X+1)数据包,直到数据发送完毕;
d) 被动方数据发送完毕,发送fin数据包(fin=1,ack=Y+1,seq=Z),表示自己的数据也发送完毕,请求关闭链接;
e) 主动方收到对方的fin包,则知道对方数据也已经发完,则发送ack包确认关闭(ack=z+1,seq=x+1)数据包。
需要注意的时候当主动方发完第四个握手的包之后,并不会马上关闭连接,它会进入一个2MSL等待状态,其实就是一来一回数据包传输时间,确认这个数据包被动方收到,也关闭连接。设置这个状态主要就是为了确保第四个数据包能够到达被动方,并且被动方收到这个包,如果在一定时间内被动方还没有收到第四个包的话,就会重发fin包,则此时如果主动方已经关闭连接,就收不到这个包了。这也就是2MSL等待状态产生的原因。
http://www.cnblogs.com/hnrainll/archive/2011/10/14/2212415.html
TCP和UDP相关概念的更多相关文章
- C++网络套接字编程TCP和UDP实例
原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1. 创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1) 创建套接字(so ...
- 【校验】TCP和UDP的校验和
一开始,私以为校验和只是简单的求和得到的结果,后来在TCP和UDP里面看到使用的校验和方式有点奇怪--二进制反码(循环进位)求和. 人类的认知过程必将从简单到复杂,看下这个二进制反码循环求和是啥子意思 ...
- 初入网络系列笔记(2)TCP和UDP
一.借鉴说明,本博文借鉴以下博文 1.BlueTzar,TCP/IP四层模型, http://www.cnblogs.com/BlueTzar/articles/811160.html 2.叶剑峰,漫 ...
- 传输层协议TCP和UDP
本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...
- 【Python网络编程】利用Python进行TCP、UDP套接字编程
之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...
- http、tcp、udp、OAUTH2.0网络协议区别
一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RAR ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
- OSI参考模型及各层功能,TCP与UDP的区别
OSI参考模型:ISO/IEC 7498标准定义了网络互联的7层结构模型,即开放系统互连参考模型. OSI参考模型定义了开放系统的层次结构.层次之间的相互关系,以及各层所包括的可能的服务.OSI的服务 ...
- TCP与UDP的区别
TCP与UDP的区别 TCP面向连接:UDP是无连接,即发送数据之前不需要建立连接 TCP提供可靠的服务,TCP连接传送的数据,无差错.不丢失.不重复,且按顺序到达:UDP尽最大努力交付,即不保证可靠 ...
随机推荐
- HDU 1874 畅通工程续-- Dijkstra算法详解 单源点最短路问题
参考 此题Dijkstra算法,一次AC.这个算法时间复杂度O(n2)附上该算法的演示图(来自维基百科): 附上: 迪科斯彻算法分解(优酷) problem link -> HDU 1874 ...
- HDU 1257 最少拦截系统(最长递减子序列的条数)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1257 题解: #include<iostream> #include<cstdio ...
- 1 RabbitMQ 安装,配置
1:安装 yum install -y rabbitmq-server 2:主要程序介绍 # 管理插件的程序 /usr/sbin/rabbitmq-plugins # 服务程序 /usr/sbin ...
- 【leetcode】215. Kth Largest Element in an Array
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
- (六)hadoop系列之__hadoop分布式集群环境搭建
配置hadoop(master,slave1,slave2) 说明: NameNode: master DataNode: slave1,slave2 ------------------------ ...
- Robotium之“去哪儿旅行”
Robotium基于APK自动化测试,只有APK文件,没有源代码. Eclipse 默认的debug keystore可以在Windows->Preferences->Android-&g ...
- Spring boot整合shiro框架(2)
form提交 <form th:action="@{/login}" method="POST"> <div class="form ...
- 卸载iptables 小心了!!怎么关闭和卸载iptables
千万千万不要使用下面的命令卸载iptables yum remove iptables 这样操作会卸载掉很多系统必要的组件,那就开不了机了,链接不上了.切记切记. 如果想永远停用,使用以下命令即可: ...
- MVC4中control的增删改查
public class TestController : Controller { private LeaveEntities db = new LeaveEntities(); // // GET ...
- java 重写父类构造器