TCP/UDP初识

news/2024/10/5 17:27:02/

TCP是面向连接的、可靠的、基于字节流的传输层协议。

面向连接:一定是一对一连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息

可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;

基于字节流的:TCP 协议在传输数据时,并不关心数据的边界。它将数据视为一连串的字节,而不是消息或数据包。这意味着 TCP 不会保留消息边界,它只是负责将字节流从发送端传输到接收端。不会保留发送数据时的任何消息边界。发送方发送的数据可能被 TCP 分割成多个段,也可能将多个消息合并成一个段发送。接收方需要根据应用层协议来识别和重组消息。

TCP格式:

源端口号和目的端口号:与源ip地址和目的ip地址构成四元组

序列号:TCP协议中用于确保数据传输有序性的一种机制。在建立连接时,由计算机生成一个随机数作为初始序列号,并通过SYN包发送给接收端主机。每发送一次数据,序列号就会累加这次发送的数据字节数的大小。

确认应答号:TCP协议中用于确保数据传输可靠性的一种机制,主要作用是解决丢包问题。它指的是接收端期望下一次收到的数据的序列号。当发送端收到接收端发来的确认应答后,可以认为所有在这个序号以前的数据都已经被接收端正常接收。

ACK:除了最初建立连接的SYN包以外,都要设置成1,

RST:当RST位设置为1时,表示TCP连接中出现异常,需要强制断开连接。

SYN:该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定。

FIN: 当FIN位设置为1时,表示发送端已经完成数据发送,希望断开当前的TCP连接。通信双方在结束数据传输后,可以通过交换FIN位为1的TCP段来关闭连接。FIN位用于优雅地结束一个TCP会话。

首部长度:因为选项是可变长,所以要记录首部长度。udp首部长度固定8个字节,无需记录。

为什么要有tcp?

IP层是「不可靠」的,它不保证网络包的交付、不保证网络包的按序交付、也不保证网络包中的数据的完整性。TCP保证网络数据包可靠性。

因为 TCP 是一个工作在传输层的可靠数据传输的服务,它能确保接收端接收的网络包是无损坏、无间隔、非冗余和按序的。

连接:用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括Socket、序列号和窗口大小称为连接。

一个 IP 的服务端监听了一个端口,它的 TCP 的最大连接数是多少?

对于服务端来说,目的 IP 地址是固定的(即服务端的 IP 地址),目的端口号也是固定的(即服务端监听的端口)。因此,变量是源 IP 地址和源端口号。

对于 IPv4,一个 IP 地址由 32 位组成,因此可能的 IP 地址总数是 2^32。

一个端口号由 16 位组成,因此可能的端口号总数是 2^16

最大 TCP 连接数 = 2^32×2^16=2^48

文件描述符限制

每个TCP连接在Linux系统中都被视为一个文件,因此受到文件描述符的限制。存在三种级别的限制:

系统级:整个系统可打开的最大文件描述符数量,可以通过查看 /proc/sys/fs/file-max 来获取。

用户级:特定用户可打开的最大文件描述符数量,可以通过查看 /etc/security/limits.conf 来获取。

进程级:单个进程可打开的最大文件描述符数量,可以通过查看 /proc/sys/fs/nr_open 来获取

存限制

操作系统的内存是有限的,如果内存资源耗尽,可能会导致 "Out of Memory"(OOM)错误。每个TCP连接都需要占用一定的内存资源。

简洁的UDP:

UDP(用户数据报协议,User Datagram Protocol)是一种无连接的、简单的传输层协议。头部只有8个字节。

TCP和UDP的区别:

  1. 连接

    • TCP面向连接,需要在数据传输前建立连接。
    • UDP无连接,可以直接发送数据。
  2. 服务对象

    • TCP提供一对一的通信服务。
    • UDP支持多种通信模式,包括一对一、一对多、多对多。
  3. 可靠性

    • TCP提供可靠交付,确保数据无差错、不丢失、不重复、按序到达。
    • UDP尽力交付,但不保证数据的可靠传输。
  4. 拥塞控制和流量控制

    • TCP具有拥塞控制和流量控制机制。
    • UDP没有这些机制,即使网络拥堵也保持发送速率。
  5. 首部开销

    • TCP首部较长,通常至少20字节,可能更长如果包含选项。
    • UDP首部固定8字节,开销较小。
  6. 传输方式

    • TCP是流式传输,无边界,保证数据顺序和可靠性。
    • UDP基于数据报文传输,有边界,可能会丢包和乱序。
  7. 分片

    • TCP在数据大于MSS时在传输层进行分片,接收端在传输层组装。
    • UDP在数据大于MTU时在IP层进行分片,接收端在IP层组装后传给传输层。

TCP和UDP的应用场景:

数据长度大小:

TCP数据长度=IP总长度-IP首部长度-TCP首部长度

TCP和UDP可以共用端口号吗?

           在数据链路层中,通过 MAC地址来寻找局域网中的主机。在网际层中,通过IP 地址来寻找网络中互连的主机或路由器。在传输层中,需要通过端口进行寻址,来识别同一计算机中同时通信的不同应用程序。
所以,传输层的「端口号」的作用,是为了区分同一个主机上不同应用程序的数据包。
传输层有两个传输协议分别是 TCP 和 UDP,在内核中是两个完全独立的软件模块。
当主机收到数据包后,可以在 IP 包头的「协议号」字段知道该数据包是 TCP/UDP,所以可以根据这个信息确定送给哪个模块(TCP/UDP)处理,送给 TCP/UDP 模块的报文根据「端口号」确定送给哪个应用程序处理。

  • TCP

    适用于需要可靠数据传输的应用,如:远程登录(SSH/Telnet),邮件传输(SMTP),文件传输(FTP),Web浏览(HTTP)
  • UDP

    适用于对实时性要求高的应用,如:某些类型的网络监控工具,DNS查询,在线游戏,实时视频和音频传输(流媒体)

http://www.ppmy.cn/news/1533870.html

相关文章

汽车发动机系统(ems)详细解析

汽车发动机系统EMS,即Engine-Management-System(发动机管理系统),是现代汽车电子控制技术的重要组成部分。以下是对汽车发动机系统EMS的详细解析,内容将涵盖其定义、工作原理、主要组成、功能特点、技术发展以及市场应…

《Linux从小白到高手》理论篇(五):文件权限控制及文件操作相关的命令

本篇介绍Linux文件权限控制及文件操作相关的命令,看完本文,有关Linux文件权限控制及文件操作相关的常用命令你就掌握了99%了。 文件权限 在介绍文件权限之前先来复习下Linux的文件类型,始终记住那句话:Linux系统下,一…

基于Hive和Hadoop的用电量分析系统

本项目是一个基于大数据技术的用电量分析系统,旨在为用户提供全面的电力消耗信息和深入的用电量分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 Spark…

计网问答大题(期末复习)

计网总结笔记 概述 互联网的 2 个重要基本特点:连通性,资源共享 从互联网的工作方式上看,可以划分为两大块: •边缘部分: 由所有连接在互联网上的主机组成,由用户直接使用,用来进行通信&…

Word:表格公式计算

一、求和公式 以下演示是在windows操作系统环境,office软件进行操作的 SUM(LEFT) 全部步骤图如下: 步骤一 光标置于单元格,依次单击【表格工具-布局】→【数据】→【公式】 步骤二 在【公式】一栏中,默认的是“SUM(LEFT)”求和…

雷池 WAF 如何配置才能正确获取到源 IP

经常有大哥反馈说雷池攻击日志里显示的 IP 有问题。 这里我来讲一下为什么一些情况下雷池显示的攻击 IP 会有问题。 问题说明 默认情况下,雷池会通过 HTTP 连接的 Socket 套接字读取客户端 IP。在雷池作为最外层网管设备的时候这没有问题,雷池获取到的…

【C++】C++基础

目录 一. C关键字(C98) 二、C的第一个程序 三、命名空间 3.1.namespace的价值 3.2.namespace的定义 3.2.命名空间使用 总结:在项目当中第一、第二种方法搭配使用,第三种冲突风险非常大,仅适合练习使用。 四、C输入&输出 五、缺省…

考研日语 - 高频核心 2200 词(八)

前言 单词均来自全国硕士研究生招生考试日语(科目代码:203)的词汇专项备考用书 《考研日语蓝宝书词汇专项》,书中从 7000 个考研大纲单词中精挑了 2236 个高频核心单词。 记录本文的目的就是没事儿时候拿出来看看,用…