tcp协议和udp协议整理

OSI模型中的传输层中的协议
在这里插入图片描述

UDP
  • 优点:
    • 快,比TCP稍安全
    • UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击……
  • 缺点:
    • 不可靠,不稳定
    • 因为UDP没有TCP那些可靠的机制,若多个主机同时发送给接收端,则多个数据将会混合;在数据传递时,如果网络质量不好,就会很容易丢包。
    • 缓冲区小于报文长度,则多出的部分会被丢弃。不指定MSG_PEEK标志,每次读取操作将消耗一个报文。
  • 应用场景:
    • 面向数据报方式
    • 网络数据大多为短消息
    • 拥有大量Client
    • 对数据安全性无特殊要求
    • 网络负担非常重,但对响应速度要求高
  • UDP编程的服务器端一般步骤是:
    • 创建一个socket,用函数socket();
    • 设置socket属性,用函数setsockopt();* 可选
    • 绑定IP地址、端口等信息到socket上,用函数bind();
    • 循环接收数据,用函数recvfrom();
    • 关闭网络连接;
  • UDP编程的客户端一般步骤是:
    • 创建一个socket,用函数socket();
    • 设置socket属性,用函数setsockopt();* 可选
    • 绑定IP地址、端口等信息到socket上,用函数bind();* 可选
    • 设置对方的IP地址和端口等属性;
    • 发送数据,用函数sendto();
    • 关闭网络连接
TCP
  • 优点:
    • 可靠,稳定
    • 可靠体现在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。
  • 缺点:
    • 慢,效率低,占用系统资源高,易被攻击
    • TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。
    • 流量控制:发送过量数据,则对方的缓存满了就会把多出的数据丢弃。 这种情况是设置非阻塞I/O模型,会把内存耗尽,因为socket是存在内核中的。
  • TCP编程的服务器端一般步骤是:
    • 创建一个socket,用函数socket();
    • 设置socket属性,用函数setsockopt(); * 可选
    • 绑定IP地址、端口等信息到socket上,用函数bind();
    • 开启监听,用函数listen();
    • 接收客户端上来的连接,用函数accept();
    • 收发数据,用函数send()和recv(),或者read()和write();
    • 关闭网络连接;
    • 关闭监听;
  • TCP编程的客户端一般步骤是:
    • 创建一个socket,用函数socket();
    • 设置socket属性,用函数setsockopt();* 可选
    • 绑定IP地址、端口等信息到socket上,用函数bind();* 可选
    • 设置要连接的对方的IP地址和端口等属性;
    • 连接服务器,用函数connect();
    • 收发数据,用函数send()和recv(),或者read()和write();
    • 关闭网络连接;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值