【linux】再谈网络基础(二)

8. 再谈端口号

(一)与协议之间的关系

端口号(Port)标识了一个主机上进行通信的不同的应用程序

在TCP/IP协议中, 用 "源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识一个通信(可以通过 netstat -n查看)

(二)端口号范围划分

0 - 1023: 知名端口号, (如 HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的)

1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的

(三)认识知名端口号

有些服务器是非常常用的, 为了使用方便, 人们约定一些常用的服务器, 都是用以下这些固定的端口号:

ssh服务器, 使用22端口

ftp服务器, 使用21端口

telnet服务器, 使用23端口

http服务器, 使用80端口

https服务器, 使用443

所以我们自己写一个程序使用端口号时, 要避开这些知名端口号

  • cat /etc/services

查看知名端口号

9. netstat 指令

netstat是一个用来查看网络状态的重要工具

语法:netstat [选项]

功能:查看网络状态

常用选项

n 拒绝显示别名,能显示数字的全部转化成数字

l 仅列出有在 Listen (监听) 的服務状态

p 显示建立相关链接的程序名

t (tcp)仅显示tcp相关选项

u (udp)仅显示udp相关选项

a (all)显示所有选项,默认不显示LISTEN相关

10. pidof 指令

在查看服务器的进程id时非常方便.

语法:pidof [进程名]

功能:通过进程名, 查看进程id

11. UDP协议

(一)UDP协议端格式

注意:

  1. 16位UDP长度, 表示整个数据报(UDP首部+UDP数据)的最大长度
  2. 16位UDP检验和,能判断是否出现数据丢失等问题
  3. 如果校验和出错, 就会直接丢弃

UDP报头本质上也是一个结构体:

操作系统内有多个报头,需要管理 ----- 先描述再组织

(二)UDP 的特点

  • 无连接: 知道对端的IP和端口号就直接进行传输, 不需要建立连接
  • 不可靠: 没有确认机制, 没有重传机制(即使因为校验和出错丢失数据,接收方也不会收到任何信息提示
  • 面向数据报: 不能够灵活的控制读写数据的次数和数量(发送方发送次数就是接收方接收次数,发送方每次发送数据的大小,就是接收方接收数据的大小),也容易导致乱序(数据发送顺序混乱等等)

注意:

UPD 对于 TCP 发送数据的不同:TCP 的读取必须是每次读取一次完整的报文,而不是读取全部数据

(三)面向数据报

应用层交给UDP多长的报文, UDP原样发送, 既不会拆分, 也不会合并

举例,如果用UDP传输100个字节的数据:

如果发送端调用一次sendto, 发送100个字节, 那么接收端也必须调用对应的一次recvfrom, 接收100个字节,而不能循环调用10次recvfrom, 每次接收10个字节

(四)UDP的缓冲区

  1. UDP没有真正意义上的 发送缓冲区,调用sendto会直接交给内核, 由内核将数据传给网络层协议进行后续的传输动作
  2. UDP具有接收缓冲区. 但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致(乱序问题)
  3. 如果缓冲区满了, 再到达的UDP数据就会被丢弃
  4. UDP的socket既能读, 也能写, 这个概念叫做 全双工

(五)UDP使用注意事项

我们注意到, UDP协议首部中有一个16位的最大长度. 也就是说一个UDP能传输的数据最大长度是64KB(包含UDP首部).

然而64K在当今的互联网环境下, 是一个非常小的数字.

如果我们的数据超过64KB就需要在应用层手动的分包, 将数据分成多个64K大小的数据,分多次发送

(六)基于UDP的应用层协议

NFS: 网络文件系统

TFTP: 简单文件传输协议

DHCP: 动态主机配置协议

BOOTP: 启动协议(用于无盘设备启动)

DNS: 域名解析协议

当然, 也包括你自己写UDP程序时自定义的应用层协议

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

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

相关文章

OpenCV视觉分析之目标跟踪(12)找到局部的最大值函数meanShift()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在反向投影图像上找到一个对象。 meanShift 是一种用于图像处理和计算机视觉领域的算法,特别适用于目标跟踪、图像分割等任务。该算…

VS2022配置OpenGL

下载地址: https://download.csdn.net/download/hgaohr1021/89974202 1、下载后,直接把OpenGL文件,全部放在 D:\Program Files这里,OpenGL这个名字也不要改!!! 2、把文件PropertySheetOpenGL.p…

革命性AI搜索引擎!ChatGPT最新功能发布,无广告更智能!

文章目录 零、前言一、ChatGPT最新AI搜索引擎功能操作指导实战1:搜索新闻实战2:搜索天气实战3:搜索体育消息 二、感受 零、前言 大人,时代变了。 最强 AI 助力下的无广告搜索引擎终于问世。我们期待已久的这一刻终于到来了,从今天起,ChatGPT…

微积分复习笔记 Calculus Volume 1 - 4.10 Antiderivatives

4.10 Antiderivatives - Calculus Volume 1 | OpenStax

O-RAN Fronthual CU/Sync/Mgmt 平面和协议栈

O-RAN Fronthual CU/Sync/Mgmt 平面和协议栈 O-RAN Fronthual CU/Sync/Mgmt 平面和协议栈O-RAN前端O-RAN 前传平面C-Plane(控制平面):控制平面消息定义数据传输、波束形成等所需的调度、协调。U-Plane(用户平面)&#…

PADS操作技巧

CTRL左键单击:结束布线 过孔:信号换层、散热 F2布线,然后右键添加过孔。 切换过孔大小

给初学者的 Jupyter Notebook 教程

目录 一、什么是Jupyter Notebook? 1. 简介 2. 组成部分 ① 网页应用 ② 文档 3. Jupyter Notebook的主要特点 二、安装Jupyter Notebook 0. 先试用,再决定 1. 安装 ① 安装前提 ② 使用Anaconda安装 ③ 使用pip命令安装 三、运行Jupyter No…

window下安装rust 及 vscode配置

安装 安装mingw64 (c语言环境 选择posix-ucrt) ucrt:通用c运行时库配置mingw64/bin的路径到环境变量中在cmd窗口中输入命令 "gcc -v" 4. 下载Rust安装程序 安装 Rust - Rust 程序设计语言 5. 配置rustup和cargo目录 (cargo是包管…

RHCE的学习(13)

第十章openEuler简介 概述 openEuler的前身是运行在华为公司通用服务器上的操作系统EulerOS。 EulerOS是一款基于Linux内核的开源操作系统,支持X86和ARM等多种处理器架构,伴随着华为公司鲲鹏芯片的研发,EulerOS 理所当然地成为与鲲鹏芯片配…

ElasticSearch 添加IK分词器

ElasticSearch 添加IK分词器 前言一、IK分词器的算法二、Ik分词器的下载安装(Winows 版本)三、Ik分词器的下载安装(Linux 版本)四、验证测试(postman工具)测试 ik_smart 分词算法测试 ik_max_word 分词算法…

被复线远传节点机JR-IPAM-1600

产品描述 JR-IPAM-1600J是一款被复线远传节点机,通过传统双绞线电缆(被复线\网线\对数电缆\矿用电缆等),用户就可以快速组成一个高速的传输网、局域网。它具有传输速率高、运行稳定、快速安装部署的特点,设备特有的AU…

window中借助nginx配置vite+vue项目的反向代理步骤

在官网下载好nginx的安装包后,解压后 CMD打开 start nginx 是启动命令 nginx -s stop 停止服务 nginx -s reload 如果重写了nginx.conf文件,要执行这条命令 正常情况下 成功启动和成功停止服务长这样 错误情况&解决 如果nginx -s stop失败 ngi…

移动取证和 Android 安全

当今的数字时代已经产生了许多技术进步,无论是智能手机还是虚拟现实、人工智能和物联网 (IoT) 等下一代基础技术。 智能手机已不再只是奢侈品,而是我们生存所必需的东西。根据各种统计数据,如今全球有超过 50% 的人使用手机。 由于数据存储…

图神经网络(GNN)入门笔记(1)——图信号处理与图傅里叶变换

一、信号处理:时域与频域 时域(Time Domain)是我们生活中常见的信号表示方式,以横轴为时间,纵轴为信号该时刻的强度(幅度),就可以得到一张时域图。打个比方,通过每时每刻…

Cent OS-7的Apache服务配置

WWW是什么? WWW(World Wide Web,万维网)是一个全球性的信息空间,其中的文档和其他资源通过URL标识,并通过HTTP或其他协议访问。万维网是互联网的一个重要组成部分,但它并不是互联网的全部。互联…

开放式耳机如何选择?五款千万不能错过的开放式耳机机型推荐

在这里我先做一个行业的知识科普,目前市场上有超过80%的品牌,都是非专业的开放式耳机品牌,也就是跨界大牌或者网红品牌,这些品牌由于没有开放式声学的技术沉淀,在制作开放式耳机的时候,通常都是直接套用传统…

补一下 二维 平面直角坐标系 到三维

上一篇帖子写到 二维的平面直角坐标系,是那样的,这次补充一下三维的。首先需要,安装一个包,如下: 然后,把参数输入,输入这个坐标系的参数,如下: 这样就可以输出如下的三…

bat调用Perl脚本接收不到参数

perl -d checkLog.pl --logfileE:\temp4\test.log --batch-name"Test-log"这样写在BAT文件里肯定能接收到参数 checkLog.pl --logfileE:\temp4\test.log --batch-name"Test-log" 但当这样写时,就不一定能接受到参数了! 现象:在Win11系统上还好,只需要在*.…

【机器学习】决定系数(R²:Coefficient of Determination)

决定系数,也称为 R 平方,是一种用于衡量回归模型预测效果的统计指标。它表示了模型解释目标变量总变异的程度,数值介于 0 和 1 之间,数值越接近 1 表明模型的解释力越强。 1. 的定义和公式 的公式如下: 其中&#xf…

推荐JDK1.8 API 中文文档

jdk api 1.8_google.CHM 一,CHM文件下载 最近更新 链接: 百度网盘 请输入提取码 提取码: e4rx 备用 链接: 百度网盘 请输入提取码 提取码: gczr 二,在线下载地址 https://www.oracle.com/java/technologies/javase-jdk8-doc-downloads.html 三&…