TCP的三次握手与四次挥手及UDP与TCP的区别

创建TCP服务器的流程:

TCP(传输层协议):

TCP是传输层控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

服务器端:

1.创建一个套接字(socket())
2.将套接字和本地的IP地址和端口绑定(bind())
3.将套接字设置为被动监听状态,监听连接的到来,并将到来的连接放入未决队列中(listen()),listen()的第二个参数是设置已完成三次握手的队列长度,在UNIX系统中表示未完成和已完成的两个队列长度之和
4.从未决连接中取出一个未决连接处理,建立连接(accept()),三次握手成功后,客户端和服务器端就建立起了TCP连接,这时调用accept()函数就可以获取此连接
5.读取数据(receive())
6.处理数据
7.发送数据(send(2))
8.关闭本次连接(close())
9.关闭监听

客户端:

1.创建一个套接字(socket())
2.与服务器建立连接(connect()),connect函数执行后就开始三次握手
3.发送数据(send())
4.读取数据(receive())
5.处理数据
6.关闭本次连接(close())

TCP建立连接的三次握手流程:

在这里插入图片描述
在这里插入图片描述

TCP断开连接的四次挥手流程:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为什么是三次握手而不是两次或四次:

不可以两次,因为第一次是使服务器端确认客户端拥有发送数据的能力,第二次是让客户端知道服务器端拥有接收数据和发送数据的能力,第三次是让服务器端知道客户端拥有接受数据的能力,缺一不可;三次握手已经得到了双方的所有通信所需信息,所以不需要第四次握手

三次握手中可能遇到的攻击:

利用TCP协议的攻击原理是a向b发送一个syn包,b返回ack和syn包,但a不再发送ack确认包,那么b将就这样一直等待a返回的确认包,占用了连接资源这样的状况称为半开连接,直到连接超时才会发生关闭连,如果a向b发送大量的syn包,b的网络连接资源将被耗尽,就构成了攻击,还有更坏的一种方式是在发送的syn包中把源地址设为一个不存在的地址,服务器向一个不存在的地址发送请求包自然得不到回应。

TIME_WAIT状态存在的意义是什么:

TIME_WAIT状态是第三次挥手中,B收到了A想要断开连接的报文后,确认收到断开报文,此时B进行第四次挥手,发送一个确认报文给A,若此时B立马断开连接,A可能收不到B发送给自己的确认断开报文,所以为了确保A能够收到B的确认报文,在发送确认报文之后进入TIME_WAIT状态等待计时器设计的时间2MSL后再关闭B。

什么时候会产生RST复位报文段:

在这里插入图片描述

TCP与UDP协议的区别(特点):

UDP:
1.UDP是无连接的,发送数据之前不需要建立连接,发送数据完毕后也不用断开连接,减少了开销和发送数据前的延迟
2.UDP是尽最大努力交付,不保证可靠交付,因此主机不需要维持复杂的连接状态表
3.UDP是面向报文的,发送方的UDP对应用程序交下来的报文,再添加首部和尾部后就向下交付给IP层,UDP对应用层交下来的报文,既不合并也不拆分,而是保留这些报文的边界,这就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文
4.UDP没有拥塞控制,网络出现的拥塞不会使源主机发送速率降低,但是不适用拥塞控制的UDP可能引起网络产生严重的拥塞问题
5.UDP支持一对一,一对多,多对多,多对一的交互通信
6.UDP的首部开销小,只有8个字节,比TCP的首部20个字节要短
总结:UDP是不面向连接,不可靠的
TCP:
1.TCP是面向连接的运输层协议,在通信前必须先建立连接,在传送数据完毕后必须释放连接
2.每一条TCP连接是能有两个端点,一对一
3.TCP提供可靠交付的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,并且按序送达
4.TCP提供全双工通信,TCP允许通信双方的应用进程在任何时候都能发送数据
5.面向字节流,TCP中的"流"指的是流入到进程或从进程流出来的字节序列,面向字节流的含义就是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但是TCP把应用程序交下来的数据仅仅看成是一串无结构的字节流来处理
总结:TCP是面向连接,可靠的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值