首页 > 其他分享 >浅谈TCP协议、UDP协议

浅谈TCP协议、UDP协议

时间:2024-08-17 12:53:55浏览次数:16  
标签:__ UDP 浅谈 TCP server client socket

一、介绍说明

TCP(传输控制协议)

  1. 面向连接:TCP在数据传输之前必须建立连接。这通过一个称为三次握手的过程来完成,确保连接的两端都准备好进行数据传输。

  2. 可靠性:TCP提供可靠的数据传输,确保数据包正确无误地到达目的地。如果数据包在传输过程中丢失或损坏,TCP会重新发送这些数据包。

  3. 有序性:TCP保证数据包按照发送的顺序到达接收端。接收方会根据数据包的序列号重新组装数据。

  4. 拥塞控制:TCP具有拥塞控制机制,能够根据网络状况调整数据发送速率,以避免网络拥塞。

  5. 流量控制:TCP使用滑动窗口机制来控制发送方的数据流量,确保接收方不会因为数据量过大而无法处理。

  6. 全双工通信:TCP允许数据在两个方向上同时传输,即发送方和接收方可以同时发送和接收数据。

  7. 适用场景:由于TCP的可靠性和有序性,它适用于需要数据完整性和顺序的应用,如网页浏览(HTTP)、文件传输(FTP)、电子邮件(SMTP)和远程登录(SSH)。

UDP(用户数据报协议)

  1. 无连接:UDP是一个无连接的协议,数据传输前不需要建立连接。发送方可以直接发送数据包,而不需要等待接收方的确认。

  2. 不可靠性:UDP不保证数据包的可靠传输。数据包可能会丢失、重复或乱序到达,但UDP不负责重新发送丢失的数据包。

  3. 低延迟:由于UDP没有建立连接和复杂的控制机制,它通常具有较低的延迟,适合需要快速传输的应用。

  4. 简单性:UDP的协议结构简单,头部开销小,这使得它在需要快速、简单传输的场景下非常有效。

  5. 适用场景:UDP适用于对实时性要求高、可以容忍一定数据丢失的应用。例如,视频会议、在线游戏、DNS查询和某些类型的流媒体服务。

二、简单代码示例

TCP服务器示例(Python)

import socket

def tcp_server():
    # 创建socket对象
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 设置服务器地址和端口
    host = '127.0.0.1'
    port = 12345
    
    # 绑定地址和端口
    server_socket.bind((host, port))
    
    # 开始监听连接
    server_socket.listen(5)
    print("服务器启动,等待连接...")
    
    while True:
        # 接受客户端连接
        client_socket, addr = server_socket.accept()
        print(f"接收到来自 {addr} 的连接")
        
        # 接收数据
        data = client_socket.recv(1024)
        if not data:
            break
        print(f"收到数据:{data.decode('utf-8')}")
        
        # 发送数据
        client_socket.sendall(data)
        
        # 关闭客户端连接
        client_socket.close()

if __name__ == '__main__':
    tcp_server()

TCP客户端示例(Python)

import socket

def tcp_client():
    # 创建socket对象
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 设置服务器地址和端口
    host = '127.0.0.1'
    port = 12345
    
    # 连接服务器
    client_socket.connect((host, port))
    
    # 发送数据
    message = 'Hello, Server!'
    client_socket.sendall(message.encode('utf-8'))
    
    # 接收数据
    data = client_socket.recv(1024)
    print(f"收到服务器响应:{data.decode('utf-8')}")
    
    # 关闭连接
    client_socket.close()

if __name__ == '__main__':
    tcp_client()

UDP服务器示例(Python)

import socket

def udp_server():
    # 创建socket对象
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 设置服务器地址和端口
    host = '127.0.0.1'
    port = 12345
    
    # 绑定地址和端口
    server_socket.bind((host, port))
    print("UDP服务器启动,等待数据...")

    while True:
        # 接收数据
        data, addr = server_socket.recvfrom(1024)
        print(f"收到来自 {addr} 的数据:{data.decode('utf-8')}")
        
        # 发送响应数据
        server_socket.sendto(b'收到你的数据', addr)

if __name__ == '__main__':
    udp_server()

UDP客户端示例(Python)

import socket

def udp_client():
    # 创建socket对象
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 设置服务器地址和端口
    host = '127.0.0.1'
    port = 12345
    
    # 发送数据
    message = 'Hello, UDP Server!'
    client_socket.sendto(message.encode('utf-8'), (host, port))
    
    # 接收响应数据
    data, server = client_socket.recvfrom(1024)
    print(f"收到服务器响应:{data.decode('utf-8')}")
    
    # 关闭socket
    client_socket.close()

if __name__ == '__main__':
    udp_client()

标签:__,UDP,浅谈,TCP,server,client,socket
From: https://blog.csdn.net/a876106354/article/details/141279008

相关文章

  • TCP/UDP网络聊天室
        本博客仅对网络聊天室项目进行分享,仅供学习讨论使用,欢迎大家讨论。UDP网络聊天室项目要求        利用UDP协议,实现一套聊天室软件。服务器端记录客户端的地址,客户端发送消息后,服务器群发给各个客户端软件,服务器也可以自己发送通知给所有客户端。  ......
  • 【网络】UDP回显服务器和客户端的构造,以及连接流程
    回显服务器(EchoServer)最简单的客户端服务器程序,不涉及到业务流程,只是对与API的用法做演示客户端发送什么样的请求,服务器就返回什么样的响应,没有任何业务逻辑,没有进行任何计算或者处理0.构造方法网络编程必须要使用网卡,就需要用到Socket对象创建一个DatagramS......
  • C# Tcp Server端实现,使用TcpListener
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;usingSystem.Net.Sockets;usingSystem.Net;usingF.Studio.Common.Cfg;usingSystem.Collections.Concurrent;namespaceKomaxCSTcpServer{pub......
  • 浅谈ChatGPT在云计算资源调度的应用
    本文分享自天翼云开发者社区《浅谈ChatGPT在云计算资源调度的应用》,作者:张****兵一、ChatGPT技术原理ChatGPT是基于GPT(GenerativePre-trainedTransformer)技术构建的大型语言模型。其技术原理主要包括以下几个方面:Transformer模型:GPT使用了Transformer模型作为其基础......
  • 浅谈ChatmoneyAI
    本文由ChatMoney团队出品最近ChatmoneyAI团队“打鸡血”似的全力开发,更新频繁到备受同行关注,那今天我们来浅谈一下ChatmoneyAI。它之所以能被认可,并不是偶然,其背后团队开发用心和逻辑,每一步推进都形成了良好的商业闭环,确实值得期待!首先谈ChatmoneyAI的逻辑,思维链技术让它具备......
  • 第六章 网络互连与互联网(五):TCP 和 UDP 协议
    五、TCP和UDP协议在TCP/IP协议簇中有两个传输协议,即传输控制协议(TCP)和用户数据报协议(UDP)。TCP是面向连接的,而UDP是无连接的。1、TCP服务(1)TCP协议提供面向连接的、可靠的传输服务,适用于各种可靠的或不可靠的网络。(2)TCP用户送来的是字节流形式的数据,这些数据缓存......
  • 浅谈偏序
    目录偏序和等价关系Dilworth定理定理1定理2(Dilworth定理)偏序和等价关系关系:设\(X\)是一个集合,\(X\)上的关系是\(X\)的元素的有序对集合\(X\timesX\)的子集\(R\)。我们把属于\(R\)的有序对\((a,b)\)写作\(aRb\)。把不属于\(R\)的有序对\((a,b)\)写作\(a\n......
  • Python 通过UDP传输超过64k的信息
    在UDP中,单个数据包的最大尺寸通常受到网络层的限制,这通常被称为最大传输单元(MTU)。在以太网环境中,标准的MTU大小通常为1500字节。尽管有些网络环境可能支持更大的数据包,但是UDP数据包的理论最大限制是65535字节(64KB),这是由于UDP头部的16位长度字段决定的。然而,如果你需要发送超过这......
  • udp和arp之间的交互作用
    udp和arp之间的交互作用arp-a验证arp告诉缓存是空的sock-u-i-nl-w8192svr4discard1.在第一个arp应答返回以前,总共产生了6个arp请求。2.在接收到第一个arp应答时(第7行),只发送最后一个数据报片(第9行)3.在大多数的现实中,在等待一个arp应答时,只将最后一个报文发送给特定目标......
  • udp介绍
    1.udp介绍udp是一个简单的面向数据报的运输层协议,进程的每个输出操作都正好产生一个udp数据报,并组装成一份待发送的ip数据包,这与面向流字符的协议不同,如tcp,应用程序产生的全体数据与真正发送的单个ip数据报可能没有什么联系。udp不提供可靠性:它把应用程序传给ip层的数据发送出......