40、端口号和套接字

经过了上节的学习之后,接下来我们再要了解的一个知识就是端口号和套接字。尤其端口号,是传输层中最为重要的基础概念之一,我们在以后的学习中会经常提及到端口号。


端口号

曾经在学习TCP/IP模型的时候,我们曾学过“SAP”即服务访问点的概念,传输层的SAP即是端口号。也就是说,传输层是通过不同的端口和上面的应用层来交换数据的。我们上节提到过的传输层为两台主机的应用进程之间通信提供服务,其实说到本质上也就是端口号在起作用。

要理解端口号,首先需要理解什么是端口,上面我们说到应用进程,当数据发送方的QQ进程发出消息,消息到达接收方的时候,接收方能够判断出这个消息该由自己的QQ进程来接收。这就是因为每一个应用进程都有自己的一个端口,把每一个端口给它编号就是端口号,端口号可以唯一标识一个应用进程,不同应用进程的端口号是不同的,接收方就是根据端口号来判断应把数据交给哪个应用程序的。

那么我们为所有的应用程序都安排一个固定的端口号就可以解决问题了,比如规定QQ进程的端口号是10,微信进程的端口号是20。这样就可以了吗?其实不然,因为应用进程是一个动态的概念,可以随时被创建和撤销,也就是我可以随时打开一个应用程序,不想用了也可以随时关闭,这样的话和端口号的配合就不够灵活。所以,比较好的一个解决办法就是:当应用进程创建的时候,由系统自动为应用进程分配一个随机的端口号,让端口号也做到“动态地创建和撤销”(除熟知端口号外)。

不过要说明的一点是,虽然端口号是由系统创建应用进程时随机分配的,但这并不等于“随便分配”。端口号也是有范围的:0~65535,虽然数量是有限的,但这个数量对一个计算机来说足够用了。


端口号的类型

在0~65535这个大范围内,又把端口号分了三个小类,分别是:熟知端口号、登记端口号和短暂端口号

其中,熟知端口号又叫“知名端口号”,这类端口号的范围是0~1023,这类端口号一般都是在服务器端为一些比较重要的知名的应用程序固定使用的,目的就是为了让所有的客户程序都能找到服务器上相应的程序,所以必须是固定的且熟知的。就像日常生活中的110、119、120等报警和急救电话一样,是大家共同熟知并且共同遵守的。当然我们不需要把所有的熟知端口号都记住,但在各类考试中我们必须要记住几个常考的:

例如,HTTP使用的端口号是80,SMTP的端口号是25,POP3的是110,DNS的是53,FTP的是20和21,TELNET的是23。这些都是各类考试中常会考的几个熟知端口号。

第二类是登记端口号,其范围是1024~49151,这一类端口也一般是在服务器端使用,是为一些还没有熟知端口号的应用程序使用的,不是太重要,简单知道就可以。

第三类是短暂端口号,其范围是49152~65535,这类端口一般是在客户端使用的,仅在客户进程运行时才被动态选择。也就是说,这种端口的存在时期是短暂的,应用进程创建时被分配,应用进程撤销时被收回。我们前面举的例子,QQ和微信这种应用程序就是在创建时被动态的分配一个短暂端口号。其实在应用程序的角度看来,自己被分配的端口号是多少并不重要,因为所有的端口号对它们来说都是一样的,只需要有一个端口,能够进行通信的工作即可。


套接字(socket)

套接字这个概念,对我们而言是一个新的说法。我们之前说“两台主机之间互相通信”这个说法不准确,因为其本质是两台主机的应用进程之间的通信。后来我们讲的是“两台主机应用进程之间的通信”,这个说法,准确了,但是不全面。

如果要既全面又准确的表达这个意思,有一个专门的术语,叫做Socket,也就是套接字。套接字的表达形式就是用冒号把IP地址和端口号连接起来,例如:(192.168.0.1:8080)所以,传输层的连接,最准确的说法应该是两端套接字的连接。

学到这里,我们应该也能更加清晰地理解前面NAPT技术的原理了,私网IP地址能够映射到同一个公网IP地址,但是使用不同的端口号。也就是在(私网IP → 公网IP)这样形式的NAT基础上,变成了(私网IP:端口号  →  公网IP:端口号)。


本节我们学习了传输层的端口号和套接字的概念。下面一节内容,我们将开始学习传输层两大协议中TCP协议具体的细节。

参考教材:谢希仁《计算机网络》第八版

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

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

相关文章

设计HTML5表格

在网页设计中,表格主要用于显示包含行、列结构的二维数据,如财务表格、调查数据、日历表、时刻表、节目表等。在大多数情况下,这类信息都由列标题或行标题及数据构成。本章将详细介绍表格在网页设计中的应用,包括设计符合标准化的…

【第七讲---视觉里程计1】

视觉里程计就是通过对图像进行特征提取与匹配得到两帧之间的位姿,并进行估计相机运动。 经典SLAM中以相机位姿-路标来描述SLAM过程 特征提取与匹配 路标是三维空间中固定不变的点,可以在特定位姿下观测到在视觉SLAM中,可利用图像特征点作为…

2023 CCF BDCI 数字安全公开赛正式开启报名

2023 CCF BDCI 数字安全公开赛重磅来袭! 全新的赛道场景 丰厚的赛事奖励 精彩的周边活动 数字安全守护人的狂欢盛宴 快来报名参加吧 大赛背景 伴随着数智化的持续加深,网络安全、数据安全风险遍布于所有场景之中,包括工业生产、能源、交…

2019年9月全国计算机等级考试真题(C语言二级)

2019年9月全国计算机等级考试真题(C语言二级) 第1题 1、“商品”与“顾客”两个实体集之间的联系一般是 A. 一对一 B. 一对多 C. 多对一 D. 多对多 正确答案:D 第2题 定义学生选修课程的关系模式:SC(S#&#xff0c…

tensorboard报错:AttributeError: module ‘distutils‘ has no attribute ‘version‘

1、报错问题 环境:pytorch 1.10 tensorboard报错:AttributeError: module ‘distutils‘ has no attribute ‘version‘ 2、解决 pip uninstall setuptools pip install setuptools59.5.0

运营商三要素 API:构建安全高效的身份验证系统

当今数字化的世界中,身份验证是各行各业中至关重要的一环。为了保护用户的隐私和数据安全,企业需要寻求一种既安全可靠又高效便捷的身份验证方式。运营商三要素 API 应运而生,为构建安全高效的身份验证系统提供了有力的解决方案。 运营商三要…

R语言 列表中嵌套列名一致的多个数据框如何整合为一个数据框

在批量建模后容易得到list&#xff0c;list中的每个元素都是单个的tibble 或者 dataframe&#xff0c;如何将这些数据整合为一张表呢&#xff1f; 载入R包 library(broom) library(tidyverse) 模拟数据 models <- txhousing %>% group_by(city) %>% do(modlm(lo…

-Webkit-Box 在 Safari 中出现的兼容性问题

一、问题背景&#xff1a; UI要求要实现这样的效果&#xff0c;使用 display:-webket-box在chrome浏览器下完美解决 但是马上啪啪打脸&#xff0c;在safari浏览器下显示空白 &#xff0c;不能不说浏览器之间的兼容性简直就是天坑 二、解决办法 通过浏览器调试发现原本float的…

使用Pillow对图像进行变换

使用Pillow对图像进行变换 from PIL import Image, ImageEnhance# 原图 image Image.open("1.jpg") image.show()# 镜像 mirrored_image image.transpose(Image.FLIP_LEFT_RIGHT) mirrored_image.show() mirrored_image.save(mirror_image.jpg)# 旋转 rotated_imag…

VK36W1D浴缸,洁具高灵敏度电容式单点液体水位检测触摸芯片资料介绍

产品品牌&#xff1a;永嘉微电/VINKA 产品型号&#xff1a;VK36W1D 封装形式&#xff1a;SOT23-6L 产品年份&#xff1a;新年份 &#xff08;C21-163&#xff09; 产品特点&#xff1a;VK36W1D具有1个触摸检测通道&#xff0c;可用来检测水从无到有和水从有到无的动作。该…

一个模型解决所有类别的异常检测

文章目录 一、内容说明二、相关链接三、概述四、摘要1、现有方法存在的问题2、方案3、效果 五、作者的实验六、如何训练自己的数据1、数据准备2、修改配置文件3、代码优化修改4、模型训练与测试 七、结束 一、内容说明 在我接触的缺陷检测项目中&#xff0c;检测缺陷有两种方法…

网络通信基础

1.网络结构模式&#xff08;C/S和B/S&#xff09; (1)C/S结构模式 服务器 - 客户机&#xff0c;即 Client - Server&#xff08;C/S&#xff09;结构。 优点&#xff1a; 能充分发挥客户端 PC 的处理能力&#xff0c;很多工作可以在客户端处理后再提交给服务器&#xff…

02 qt基本控件及信号和槽

一 QString类 功能:显示一个字符串内容 主要接口函数 构造函数: QString(const char *str)QString(const QString &other)赋值运算符重载: QString &operator=(const QString &other)功能函数: 1&

如何完善餐饮门店的进店服务,请看餐饮神秘顾客如何专业检测?

神秘顾客检测能够评估餐饮门店实际运营状况和顾客体验。但是&#xff0c;并不是所有的神秘顾客都能够圆满完成门店的各项检测任务。如果神秘顾客在执行过程中进展不顺&#xff0c;可能是没有把握重点&#xff0c;神秘顾客调查是群狼调研(长沙快餐连锁神秘顾客)优势业务之一&…

C++字符串转换总结

以下C字符串转换均在unicode编码下进行 目录 string转wstringwstring转stringMFC CString转wstringMFC CString转stringMFC const char*转CStringMFC CString转const char*char、wchar_t数组转stringTCHAR数组转到CStringCString转为TCHAR数组 string转wstring 当在 Unicode 下…

大数据-玩转数据-Flink RedisSink

一、添加Redis Connector依赖 具体版本根据实际情况确定 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-redis_2.11</artifactId><version>1.1.5</version> </dependency>二、启动redis 参…

如何提高深度学习性能

可用于 对抗过度拟合并获得更好泛化能力的20 个提示、技巧和技术 如何从深度学习模型中获得更好的性能? 这是我最常被问到的问题之一。 可能会被问为: 如何提高准确率? ……或者可以反过来说: 如果我的神经网络表现不佳该怎么办? 我经常回答说:“我不太清楚,但我有很…

分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分类预测

分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分类预测 目录 分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.分类预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机多输入分…

工作纪实36-ES跨集群迁移

1.es数据备份、恢复 https://blog.csdn.net/andy_only/article/details/111319175 2.reindex命令 https://codeleading.com/article/40964498185/ 添加配置、重启ES cd bin sh elasticsearch -d3.开源工具 https://github.com/elasticsearch-dump/elasticsearch-dump 4.…

回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测

回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测&#xff1b; 2.运行环…