首页 > 其他分享 >TCP和UDP

TCP和UDP

时间:2023-03-26 16:55:24浏览次数:33  
标签:UDP socket TCP client fd 迎宾

1.TCP和UDP的形象举例

TCP

例子:饭店的门口有一个迎宾人员,这时莫个人X去吃饭,被迎宾人员接待交给服务员服务员为这个X提供各种服务

  • X -》某个客户端
  • 迎宾人员 -》listen的端口
  • 服务人员 -》accept接受后的端口
  • sever端

    // 迎宾人员 -- client -》为迎宾人员确定服务地点,并告诉她进行迎宾,可以有多个迎宾人员
    fd = socket();
    bind(ip,port);
    listen(); -》listen的过程是被动的,c/s的三次握手也是发生再次,确认连接之后,进入accept过程;
    -- listen的过程不会影响后续的操作,或者说它是非阻塞的
    
    // 服务员 -- client -》进行各种服务,结账close亦如此
    client = accept();
    recv(client);
    send(client);
    close();
    
  • client端

    // 吃饭的人
    fd = socket();
    bind(); -》optional可选项;
    addr;-》准备吃饭的地址;
    connect(addr);
    send();
    recv();
    close();
    

UDP

例子:UDP和TCP的不同就是,UDP的饭店是个小饭店,迎宾的人和服务的人是同一个人 -》这就代表了UDP服务器只有一个端口进行工作

  • sever端

    fd = socket();
    recvfrom(fd, addr, buffer, length, 0);-》接受信息的时候,会把client的地址传出来,对于一个客户端来说
    sendto();
    
  • client端

    fd = socket();
    recvfrom(fd, addr, buffer, length, 0);
    sendto();
    
  • 如果想要使用UDP服务器进行多个客户端的并发,应该怎么办?

    • 模拟TCP通信,创建一个fd,服务client
      • 可以在应用层和传输层UDP之间增加一个协议,保证并发连接
    • 为什么使用增加协议头不行呢?
      • 这种方法有个前提:先发先到,具有顺序
      • 不可以,在公网下,数据链路层是把数据进行分组发出,中间经历多次路由,并且UDP是不会对数据的连接负责,即不能保证数据的接收是顺序的,因此对于多个客户端对应一个端口,所有数据是无序的,也就找不到其协议头 -》也就无法从应用层上确定发过来的数据是谁的;

socket的理解

  • socket = fd + (sip、dip、sport、dport、tcp/udp)即文件描述符+网络配套资源(五元组)的一套插座组合
    • 可以看作一个客户端
    • 具有IO的某些属性

2.拓展

  • select/ poll/ epoll
  • sigio

标签:UDP,socket,TCP,client,fd,迎宾
From: https://www.cnblogs.com/zqurgy/p/17258939.html

相关文章

  • C#-UDP协议通讯(二)-优化丢包问题
    一、问题描述:  UDP协议在数据量非常大的时候会造成一定数量的丢包,数量越大,丢包率越高。二、解决问题的办法:1、首先调整接收后异步处理数据,保证接收数据的通畅。2、增......
  • TCP协议
    TCP协议今天,继续来网管的自我修养之TCP协议,这可是除IP协议外另一个核心协议了。TCP协议是网络传输中至关重要的一个协议,它位于传输层。向上支持FTP、TELNET、SMTP、......
  • NFS启用UDP
    目录NFS启用UDP视频演示服务端的配置客户端的配置验证NFS启用UDP目标我们使用的NFS通常是NFSv3和v4NFSv2支持UDP传输,所以,我们想先配置NFSv2,然后再指定用UDP;视频演示https://......
  • TCP 协议
    一、TCP 协议概念TCP即传输控制协议(TransmissionControlProtocol)是一种面向连接的、可靠的、基于字节流的传输层通讯协议。TCP是为了在不可靠的互联网上提供可靠的端到端......
  • UDP协议精华总结
    引入本文面向有一定计网基础的读者。TCP,UDP,IP可以说是计网的常客了,它们三紧密联系,以至于经常看见“TCP/IP”这样的名词,但实际上UDP也是基于IP的,但似乎很少见“U......
  • Webservice入门教程_用Eclipse的TCP_IP工具监听请求实现端口转接
    实现在上面实现JDK开发webservice的基础上。配置TCP_IP工具Eclipse-Windows-preferences-TCP/IPMonitor-AddLocalmonitoringport是转接前的端口Hostname是address中......
  • 30张图说清楚 TCP 协议
    大家好,我是风筝前两天分享了20张图说清楚IP协议今天,继续来网管的自我修养之TCP协议,这可是除IP协议外另一个核心协议了。TCP协议是网络传输中至关重要的一个协议,......
  • GO实现Redis:GO实现TCP服务器(1)
    本文实现一个EchoTCPServer完整代码:https://github.com/csgopher/go-redisinterface/tcp/Handler.gotypeHandlerinterface{Handle(ctxcontext.Context,con......
  • UDP聊天实现
    packageedu.wtbu;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.net.DatagramPacket;importjava.net.Data......
  • 【Eolink】Apikit V10.8.0 版本发布!增加支持 DUBBO、TCP、SOAP 、HSF、UDP 的接口协议
    Apikit 最新功能来袭!......