博客
关于我
Python网络编程之TCP与UDP
阅读量:373 次
发布时间:2019-03-04

本文共 1246 字,大约阅读时间需要 4 分钟。

TCP与UDP协议解析

TCP(传输控制协议)和UDP(用户数据报协议)是互联网中最基础的通信协议,分别基于连接和无连接的通信模型,适用于不同的应用场景。

TCP协议特点

  • 面向连接:TCP通信需要先建立连接,确保数据可靠传输。
  • 面向流:TCP通信类似于数据流,数据没有固定的边界,通信双方需要维持连接状态。
  • 可靠性:TCP通过三次握手建立连接,确保数据可靠传输,支持数据片断传输和重传机制。
  • Nagle算法: TCP发送端会将多个小的数据包合并成一个大数据块,减少网络传输次数,提高效率。
  • 拆包机制:接收端需要具备科学的拆包能力,准确解析数据包内容。
TCP三次握手与四次挥手

建立TCP连接需要三次握手:

  • 客户端发送SYN包给服务器。
  • 服务器响应SYN-ACK包给客户端。
  • 客户端发送ACK包确认连接。
  • 断开TCP连接需要四次握手:

  • 一方发送FIN包。
  • 另一方响应ACK包。
  • 另一方发送FIN包。
  • 第一方响应ACK包。
  • 基于TCP的套接字编程
    • 服务端

    • 创建socket,设置属性。
    • 绑定IP地址和端口。3.监听 incoming connections。4.接受客户端连接,进入通信循环。5.处理通信数据,发送回复。6.关闭客户端连接,关闭服务器socket。
    • 客户端

    • 创建socket,设置属性。2.连接到服务器,提供服务端IP和端口。3.进入通信循环,发送数据,接收回复。4.关闭socket。

    UDP协议特点

    • 无连接:UDP通信不需要先建立连接,直接发送数据包。
    • 面向消息:每个数据包有独立的消息边界,传输效率高。
    • 无优化:UDP不支持Nagle算法,直接发送小数据包。
    • 一对多通信:支持多播和组播,适合分布式应用。
    基于UDP的套接字编程
    • 服务端

    • 创建socket,设置属性。2.绑定本地IP和端口。3.进入接收循环,使用recvfrom接收数据包。4.处理数据,调用sendto发送回复。5.关闭socket。
    • 客户端

    • 创建socket,设置属性。2.发送数据包,调用sendto。3.接收回复数据包,调用recvfrom。4.关闭socket。

    TCP/IP协议的起源

    • 定义:TCP/IP是传输控制协议/因特网协议的简称,是互联网的基础协议。
    • 历史背景:20世纪50年代末,美国军方为防御网络攻击,开发了ARPAnet(阿帕网),1969年正式运行。
    • 发展历程:ARPAnet逐渐扩展,形成互联网,1974年TCP/IP协议正式诞生。
    • 开放性:TCP/IP协议公开可用,促进了多厂商参与互联网建设。

    TCP/IP五层模型

    • 物理层:定义数据传输的物理介质和传输速率,如以太网。
    • 数据链路层:处理数据帧传输,如以太网协议。
    • 网络层:实现网络间通信,使用IP协议。
    • 传输层:提供可靠传输,使用TCP和UDP协议。
    • 会话层:管理端到端的通信,支持多种传输协议。

    TCP和UDP协议作为互联网的核心协议,各有优势,适用于不同的应用场景。理解两者的区别和特点,是掌握网络编程的基础。

    转载地址:http://bpyg.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | CoTracker3:用于卓越点跟踪的最新 AI 模型
    查看>>
    OpenCV与AI深度学习 | OpenCV中八种不同的目标追踪算法
    查看>>
    OpenCV与AI深度学习 | OpenCV图像拼接--Stitching detailed使用与参数介绍
    查看>>
    OpenCV与AI深度学习 | OpenCV如何读取仪表中的指针刻度
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(一) :直接拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(三):基于特征匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(二) :基于模板匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(四):基于Stitcher类拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | YOLOv10在PyTorch和OpenVINO中推理对比
    查看>>
    OpenCV与AI深度学习 | YOLOv11来了:将重新定义AI的可能性
    查看>>
    OpenCV与AI深度学习 | YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)
    查看>>
    OpenCV与AI深度学习 | YOLOv8重磅升级,新增旋转目标检测,又该学习了!
    查看>>
    OpenCV与AI深度学习 | 一文带你读懂YOLOv1~YOLOv11(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)
    查看>>
    OpenCV与AI深度学习 | 什么是 COCO 数据集?
    查看>>
    OpenCV与AI深度学习 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测
    查看>>