以太网--TCP/IP协议(二)

news2024/9/19 23:37:42

上文中讲述了IP协议,本文主要来讲一下TCP协议。

TCP协议

(1)端到端通信

直接把源主机应用程序产生的数据传输到目的主机使用这 些数据的应用程序中,就是端到端通信

(2)传输层端口

公认端口,数值一般为 0~1023。

登记端口号,数值为1024~49151,为没有公认端口号的 应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。

客户端口号或短暂端口号,数值为49152~65535,留给客 户进程选择暂时使用。当服务器进程收到客户进程的报 文时,就知道了客户进程所使用的动态端口号。通信结 束后,这个端口号可供其他客户进程以后使用。

端口协议说明
21FTP文件传输协议,用于上传、下载
23TELNET用于远程登陆,通过连接目标计算机的这一端口,得 到验证后可以远程控制管理目标计算机
25SMTP简单邮件传输协议,用于发送邮件
53DNS域名服务,当用户输入网站的名称后,由DNS负责将 它解析成IP地址,这个过程中用到的端口号是53
80HTTP超文本传输协议,通过HTTP实现网络上超文本的输出

(3)TCP报文段格式

  • 源端口和目的端口:源端口号与IP头部中的源IP地址,目的端口与IP头部中的目的地址,可以唯一确定从源端到目的端的一对TCP连接。共有216-1个端口号。
  • 序号:用于标识TCP发送端向TCP接收端发送数据字节流的序号,指的是本报文段所发送的数据的第一个字节的序号。
  • 确认号:用于标识接收端收到的下一个TCP报文段第一个字节的序号。确认号字段只有当ACK标志为1时才有效
  • 数据偏移:指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。也称为首部长度
  • 紧急位URG : URG=1时,表明紧 URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 急指针字段有效.它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
  • 确认位ACK :ACK=1时,确认号才有效;ACK=0时,确认号无效。
  • 推送位PSH :接收TCP收到推送位置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满后才向上交付。 推送位psh:接收tcp收到推送位置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满后才向上交付。
  • 复位位RST :RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因) ,必须释放连接,同时通知对方。
  • 同步位SYN:SYN=1时,表示这是一个连接请求或连接接受报文。只有在连接建立的过程中SYN才被置1。
  • 终止位FIN :用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放传输连接。
  • 窗口:用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间的大小确定自己的接收窗口大小然后通知对方以确定对方的发送窗口的上限
  • 检验和:覆盖报文的头部和整个数据部分。
  • 紧急指针:URG=1时,紧急指针指向紧急数据的位置。

TCP连接的建立(三次握手)

  • A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数 据字节的序号是 x。

  • B 的 TCP 收到连接请求报文段后,如同意,则发回确认。
  • B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号 ack = x + 1,自己选择的序号 seq = y。

  • A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y + 1。
  • A 的 TCP 通知上层应用进程,连接已经建立。

  • B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP连接已经建立。

TCP连接的关闭(四次挥手)

  • 数据传输结束后,通信的双方都可释放连接。现在 A 的 应用进程先向其 TCP 发出连接释放报文段,并停止发送数 据,主动关闭 TCP 连接。
  • A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待B的确认。

  • B 发出确认,确认号 ack = u + 1, 序号 seq = v。TCP 服务器进程通知高层应用进程。 从 A 到 B 这个方向的连接 就释放了,TCP 连接 处于半关闭状态。
  • B 若发送数据,A 仍要接收。

  • 若B已经没有要向A发送的数据,其应用进程就通知 TCP 释放连接。

  • A 收到连接释放报文段后,必须发出确认。在确认报文 段中 ACK = 1,确认号 ack =w + 1,自己的序号 seq = u + 1。

UDP协议

UDP是一种无连接的、不可靠的传输层协议,它不对发送的数据包进行排序、重组,也不提供数据确认、重传或流量控制等机制。这种设计使得UDP在数据传输上更加高效,但同时也意味着数据的完整性和可靠性需要由应用层来保障。

工作原理

当应用层数据通过UDP发送时,UDP会将其封装成一个个的数据报(Datagram),每个数据报都包含了源端口号、目的端口号、数据长度和校验和等信息。然后,这些数据报会通过网络层(如IP协议)传输到目标主机,由目标主机的UDP层解封装后传递给相应的应用层。

优势

  • 高效性:由于UDP省略了TCP中的许多复杂机制,如三次握手、四次挥手等,因此在数据传输速度上更具优势。
  • 实时性:对于需要快速响应的应用(如在线游戏、实时音视频传输等),UDP的低延迟特性使其成为首选。
  • 简单性:UDP协议的设计相对简单,实现起来更加容易,也更容易进行调试和优化。

劣势

  • 不可靠性:由于UDP不提供数据确认和重传机制,因此在网络条件不佳时容易出现数据丢失或乱序现象。
  • 无连接性:UDP是一种无连接的协议,这意味着在数据传输前不需要建立连接,但也因此无法对传输的双方进行身份验证或加密保护。

UDP的应用场景

  • 实时音视频传输:在视频会议、在线直播等场景中,UDP因其低延迟特性而被广泛应用。尽管可能会面临一定的数据丢失风险,但通过合理的错误隐藏和冗余编码等技术手段,可以保证音视频流的流畅性和连续性。
  • 网络游戏:对于需要快速响应和低延迟的网络游戏来说,UDP是不可或缺的。游戏中的操作指令和状态更新往往需要即时传输,而UDP正好能够满足这一需求。
  • DNS查询:DNS(域名系统)查询也常使用UDP协议。因为DNS查询通常只涉及少量的数据交换,且对实时性要求较高,所以使用UDP可以大大减少查询的延迟。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2113339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Feign入门讲解

1.引入 之前在讲解服务之间的远程调用的时候都是用RestTemplate来发送HTTP请求,但这种方式显得比较冗余,不方便维护,所以现在使用Feign来代替这种方式 Feign是一个声明式HTTP客户端,专门用来发送HTTP请求 2.快速入门 2.1.引入依赖…

万向轮[随动轮]介绍--偏心距

万向轮[随动轮]介绍 1 概述1.1 偏心距定义1.2 偏心距对回旋性能、力矩和寿命的影响1.3 车轮类型分类1.4 轮子特性要求【耐磨、减震、高载重、保护地面不留痕迹及抗静电】1.5 材质【橡胶、聚氨酯、尼龙、金属、酚醛树脂、MC尼龙】1.6 胎面纹路【咬花纹、人字纹、平面、咬花纹人字…

【Linux】读者写者问题与读写锁

终此一生,只有两种办法: 要么梦见生活,要么落实生活。 --- 勒内・夏尔 --- 读写锁和自旋锁 1 读者写者问题2 读写锁3 读写锁的两大特性 1 读者写者问题 读者写者是一种生产消费模型,所以就满足"321"原则&#xff1a…

Node.js和vue3实现GitHub OAuth第三方登录

Node.js和vue3实现GitHub OAuth第三方登录 前言 第三方登入太常见了,微信,微博,QQ…总有一个你用过。 在开发中,我们希望用户可以通过GitHub账号登录我们的网站,这样用户就不需要注册账号,直接通过GitHu…

mysql树形结构返回是否叶子节点

我们界面上展示树形结构的时候往往会用到懒加载,做懒加载需要知道哪个节点是叶子节点,这样叶子节点就不需要继续往下加载了,这种需求可以通过sql实现 先来看下表结构 方式一,通过sql语句直接获取leaf 什么是叶子节点?就是没有哪…

海外云服务器安装 Redis 6.2.x (Ubuntu 18.04 记录篇三)

本文已首发于 秋码记录 通过前两篇的实践,我们已然在海外云服务器/VPS安装了JDK和MariaDB数据库,一个能够运行Java项目的海外云服务器/VPS算是告一段落了。 然而,在这请求量与日俱增的情况下,MariaDB数据库显然是在超负债的工作…

《黑暗之魂2:原罪学者》是什么类型的游戏 《黑暗之魂》可以在苹果Mac电脑上玩吗?

在宏大的世界观游戏中,《黑暗之魂2:原罪学者》脱颖而出,以其探索性和挑战性征服了全球玩家的心灵。下面我们来看看《黑暗之魂2:原罪学者》是什么类型的游戏,《黑暗之魂2:原罪学者》可以在苹果电脑玩吗的相关内容。 一、《黑暗之魂2:原罪学者》…

[计算机网络]-计网学习笔记-计网知识点总结(附完整笔记)

本笔记是跟着 b站 湖科大教书匠 视频做的笔记,其中图片为视频中的 PPT,加上了自己的注释。 这是原视频链接。大家可以参照着笔记看原视频。视频中的 PPT 做的非常好。 【计算机网络微课堂(有字幕无背景音乐版)】https://www.bilib…

TOPSIS法详细讲解+Python代码实现

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

数据结构——双链表实现和注释浅解

关于双链表的基础部分增删查改的实现和一点理解,写在注释里~ 前言 浅记 1. 哨兵位的节点不能被删除,节点的地址也不能发生改变,所以是传一级指针 2. 哨兵位并不存储有效数据,所以它并不是有效节点 3. 双向链表为空时&#xff…

单点登录:cas单点登录实现原理浅析

cas单点登录实现原理浅析 一晃几个月没写博客了,今年多灾多难的一年。 安能摧眉折腰事权贵,使我不得开心颜! 财富是对认知的补偿,不是对勤奋的嘉奖。勤奋只能解决温饱,要挣到钱就得预知风口,或者有独到见解…

探寻 IP 代理地址繁多之因

在当今的网络天地里,IP 代理服务随处可见,且令人称奇的是,它们常常手握海量的 IP 地址可供挑选。那么,究竟是什么原因使得 IP 代理拥有如此众多的地址呢?现在,就让我们一同深入探究这个神秘现象背后的缘由。…

Camunda调用子流程案例

调用子流程 调用子流程是指子流程在主流程的外面。子流程一般是多个流程可重用的流程,也可以独立调用子流程。 可以对比编程中的方法抽取。子流程运行时,主流程也是等待状态。子流程结束,主流程继续。 BPMN设计 主流程 全局配置 上传视频 处…

并查集基础与简单扩展应用

并查集 基础题目路径压缩 扩展应用扩展题目1扩展题目2 并查集的结构是一棵树 并查集有两种功能,一种是判断两个元素是否在同一集合,第二种是合并两个集合 并查集的实现需要记录每个节点的父亲节点 判断两个元素是否在同一集合,即判断两个元…

ARM编程模型、指令集、ARM汇编语言程序设计

一、编程模型 1.1数据和指令类型 在之后的演示当中,我们大多数将采用ARM指令集 1.2处理器工作模式 1.3ARM寄存器 1.3.1分类 (1) 31 个通用寄存器,包括 PC(程序计数器)在内,都是 32 位的寄存器…

实习项目|苍穹外卖|day7

缓存菜品 1.根据原型进行需求分析与设计&#xff08;接口文档&#xff09; 2.根据接口设计DTO&#xff08;redis数据类型选取&#xff09; 3.编码controller-》service-》mapper GetMapping("/list")ApiOperation("根据分类id查询菜品")public Result<…

51单片机-第十三节-直流电机驱动(PWM)

一、直流电机介绍&#xff1a; 直流电机是一种将电能转换为机械能的装置。 一般的直流电机有两个电极&#xff0c;电极正接&#xff0c;电机正转&#xff0c;电极反接&#xff0c;电机反转。 直流电机主要由永磁体&#xff08;定子&#xff09;、线圈&#xff08;转子&#…

GB35114 USC安防平台 中星微国密摄像机配置 流程

中星微国密摄像机配置介绍 如下以中星微VS-IPC8021S-Y-T4摄像机为例&#xff0c;需要先各自获取p10文件&#xff0c;并通过证书签发机构或者测试SM2证书签发获取证书。 网络配置如下: 摄像机的IP地址为192.168.1.108&#xff0c;国标ID为34020000001320000015 系统的IP地址…

Robotframework框架基础

1.Robot Framework是开源的自动化测试框架&#xff0c;基于关键字驱动的测试方法2.它提供用于创建和执行自动化测试的工具和库&#xff0c;并支持使用不同的测试库和插件进行扩展 一.以下是Robot Framework框架的基础知识 1. 安装&#xff1a;通过pip安装Robot Framework和相…

打造可视化数字大屏供应链管理平台详解:从食堂采购系统源码开始

这篇文章将深入探讨直播美颜SDK与主播美颜工具的技术原理及其发展趋势&#xff0c;帮助开发者了解如何通过技术手段实现流畅、高效的实时美颜效果。 一、什么是直播美颜SDK&#xff1f; 直播美颜SDK是一种为开发者提供实时美颜功能的集成开发工具包。它通过对摄像头捕捉到的画…