TCP/UCP

server/2024/12/22 9:01:41/
Loop本地回环
  • 定义:Loop本地回环通常指的是以127开头的IP地址段(127.0.0.1 – 127.255.255.254),其中127.0.0.1是最常用的地址,被称为本地回环地址(Loop back address)。
  • 特点:不属于任何有类别地址类,代表设备的本地虚拟接口,默认被看作是不会宕掉的接口。
  • 主要作用
    1. 测试本机的网络配置:通过ping 127.0.0.1检查本机网卡和IP协议安装是否正常。
    2. 应用程序的资源调用:在SERVER/CLIENT程序中,当在同一台机器上运行且没有其他SERVER时,可以将SERVER的IP设为127.0.0.1,程序可以正常运行。
粘包问题
  • 定义:TCP/IP通信中常见的问题,由于TCP的流式传输特性,数据没有明确的开始和结尾边界,导致数据包可能被合并发送或接收。
  • 原因
    1. 发送方:为提高传输效率,收集足够数据后一次发送,导致粘包。
    2. 接收方:用户进程不及时接收数据,多个数据包在缓冲区粘连。
  • 解决方法
    1. 使用特定结束符:数据包末尾添加特定结束符(如换行符\n)。
    2. 固定数据大小:约定数据包大小,不足时用空字符补齐。
    3. 封装自定义数据协议:在TCP协议上封装一层自定义协议,包括数据头和数据体。
recv函数和send函数
  • recv函数
    • 功能:从已连接的套接字接收数据。
    • 参数
      • sockfd:套接字描述符。
      • buf:指向缓冲区的指针。
      • len:缓冲区长度。
      • flags(可选):指定接收数据的额外选项。
    • 返回值:成功时返回接收到的字节数,失败时返回-1。
    • 注意事项
      • 阻塞函数,可以通过设置非阻塞模式或使用select/poll/epoll避免阻塞。
      • 可能需要循环接收数据直到达到期望量。
  • send函数
    • 功能:实现数据的发送功能。
    • 参数
      • sockfd:套接字描述符。
      • buf:指向要发送数据的缓冲区的指针。
      • len:指定要发送的数据的字节数。
      • flags:控制标志,通常设置为0。
    • 返回值:成功时返回实际发送的字节数,失败时返回-1。
    • 注意事项
      • 阻塞函数,可通过设置非阻塞模式或使用select/poll/epoll避免阻塞。
      • 可能需要循环发送数据直到所有数据发送完毕。
TCP协议特点
  1. 面向连接:传输数据前必须建立连接。
  2. 可靠传输:通过确认应答、超时重传、错误检测等机制确保数据可靠传输。
  3. 基于字节流:不保留报文边界,将数据视为字节流传输。
UDP协议特点
  1. 无连接:发送数据前不需要建立连接。
  2. 不可靠:不保证数据可靠传输,只负责发送数据报。
  3. 基于数据报:保留报文边界,每个数据报作为独立单元处理。
常用网络测试工具
  • Wireshark:抓包工具,用于捕获网络数据包并分析。
TCP首部结构
  • 固定部分(前20个字节)
    • 源端口:2字节,发送方应用进程端口号。
    • 目的端口:2字节,接收方应用进程端口号。
    • 序号:4字节,标识发送的数据段。
    • 确认号:4字节,期望收到的下一个数据字节的序号。
    • 数据偏移:4位,指出数据起始处距离报文段起始处的距离(以32位字为单位)。
    • 保留:6位,置为0。
    • 控制位:6位,包括ACK、PSH、RST、SYN、FIN等。
    • 窗口:2字节,接收方允许发送的数据量。
    • 检验和:2字节,用于检查数据的完整性和正确性。
    • 紧急指针:2字节,仅在URG=1时

http://www.ppmy.cn/server/107883.html

相关文章

看图学sql之sql 中的UNION 和union all

UNION 用于合并两个或者多个 SELECT 语句的结果集 语法: SELECT column1, column2 ... FROM table1, table2 [WHERE condition1]UNION / UNION ALLSELECT column1, column2 ... FROM table1, table2 [WHERE condition2] 数据分析社区直达 免费数据分析资料下载。…

Git -- 总结 01

Git 使用前配 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head>…

ComsolMatlab 两级串联扩张式消声器仿真解与解析解

消声器的声学性能通常要求消声器在工作频率范围内有较大的消声量以及较宽的消声频带。常用的消声器声学性能评价指标通常有传递损失、插入损失、减噪量三种。其中插入损失只能反映整个系统在安装消声器前后声学特性的变化&#xff0c;并不能直接反映消声器本身单独具有的属性。…

秋招力扣Hot100刷题总结——堆

1. 数组中的第K个最大元素 题目链接 题目要求&#xff1a;给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) …

WEB应用服务器 -- Tomcat详解及案例实现

一、Web前端三大核心技术 1.1 HTML HTML&#xff08;HyperText Markup Language&#xff09;超文本标记语言&#xff0c;它不同于一般的编程语言。超文本即超出纯文本的范畴&#xff0c;例如&#xff1a;描述文本颜色、大小、字体等信息&#xff0c;或使用图片、音频、视频等…

Django后台管理Xadmin使用DjangoUeditor富文本编辑器

Django后台管理Xadmin使用DjangoUeditor富文本编辑器 一、下载 点击github下载 https://github.com/twz915/DjangoUeditor3 1、下载完后解压到跟xadmin同一层级目录: 2、解压后名称可能为DjangoUeditor3-master,需要改为DjangoUeditor 3、进入DjangoUeditor目录,把Djan…

C/C++ 编译过程概述

C/C的编译过程可以分为四个主要阶段&#xff1a;预处理、编译、汇编和链接 1. 预处理&#xff08;Preprocessing&#xff09; 预处理阶段由预处理器完成&#xff0c;主要是对源代码文件进行一些替换操作&#xff0c;常见的预处理任务包括&#xff1a; 宏替换&#xff1a;展开…

Python---字符串对象和切片操作

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 一.字符串内置函数 大小写函数 upper()函数&#xff1a;将字符串中的所有小写字母转换为大写字母。isupper()&#xff1a;判断是否大写 s "hello world" print(s.upper()) …