Linux网络编程 网络基础知识

news2024/11/20 6:19:20

目录

1.网络的历史和协议的分成

2.网络互联促成了TCP/IP协议的产生

3.网络的体系结构

4.TCP/IP协议族体系

5.网络各层的协议解释

6.网络的封包和拆包

7.网络预备知识     


1.网络的历史和协议的分成

Internet-"冷战"的产物
1957年十月和十一月,前苏联先后欧两颗”Spuinik”卫星上天
1958年美国总统艾森豪威尔向美国国会提出建立DARPA,即国防部高级研究计划署,简称ARPA.1968年6月DARPA提出“资源共享计算机网络”,目的在于让DARPA的所有电脑互连起来,这个网络就叫做ARPAnet,即“阿帕网”,是Internet的最早雏形。

2.网络互联促成了TCP/IP协议的产生

早期的ARPAnet使用网络控制协议,不能互联不同类型的计算机和不同类型的操作系统,没有纠错功能

1973年有Rober Kahn 和 Vinton Cerf 两人合作为ARPAnet开发了新的互联网协议

1974年12月两人正式发表第一份TCP协议详细说明,但此协议在有数据包丢失时不能有效的纠正

TCP协议分成了两个不同的协议:

  • 用来检测网络传输中差错的传输控制协议TCP
  • 专门负责对不同网络进行互联的互联网协议IP
  • 从此TCP/IP协议诞生

1983年ARPAnet上停止使用NCP,互联网上的主机全部使用TCP/IP协议,TCP/IP协议成为Internet中的“世界语”。

3.网络的体系结构

  • 网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起
  • 每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务,同时使用下层提供的服务。
  • 网终体系结构即指网络的层次结构和每层所使用的协议的集合
  • 两类非常重要的体系结构:OSI和 TCP/IP。
  • OSI模型相关的协议已经很少使用,但模型本身非常通用                                                             OSI模型是一个理想化的模型,尚未有完整的实现
  • OSI模型共有七层
  • 二层交换机,三层交换机

4.TCP/IP协议族体系

  • TCP/IP协议族体系是Internet事实上的工业标准
  • 一共有四层
应用层Relnet,FTP,HTTP,DNS,SMTP等
传输层TCP和UDP
网络层IP,ICMP和IGMP,端到端传输
网络接口和物理层以太网,令牌环网,FDDI,wifi,gps/2G/3G/4G,驱动(屏蔽硬件差异)

5.网络各层的协议解释

1.网络接口和物理层

 mac地址: 48位全球唯一,网络设备的身份标识

  •  ARP:地址解析协议,IP地址找到mac地址
  •  RARP:mac地址--找到P地址
  •  PPP协议: 拨号协议 (GPRS/3G/4G)

2.网络层

  •  IP地址
  •  IP协议: Internet protocol(分为IPV4和IPv6)
  •  ICMP:Internet控制管理协议,Ping 命令属于ICMP
  •  IGMP:Internet分组管理协议,广播和组播

3.传输层

TCP: (Transfer Control protocol,传输控制协议) 提供面向连接的,一对一的可靠传输的协议

  • 数据无误,数据不丢失,数据无失序
  • 适用场景
  • 适合对传输质量要求较高,以及传输大量数据的通信
  • 在需要可靠数据传输的场合,通常适用TCP协议
  •  MSN/QQ等即时通讯软件的用户登录账号管理相关的功能通常采用TCP协议

UDP: (user Datagram Protocol,用户数据报协议) : 提供不可靠,无连接的传输协议

  • 适用场景
  • 发送小尺寸数据 (如对DNS服务器进行IP地址查询时)
  • 在接收数据,给出应答较困难的网终中适用UDP (如无线网络)
  • 适合于广播/组播式通信中MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通常采用UDP协议流媒体VOD,VoIP,IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输         

SCTP: (Stream Control Transmission Protocol:流控制传输协议),TCP的增强版,他能实现多主机多链路的通信。       

 4.应用层            

网页访问协议: HTTP/HTTPS0
邮件发送接收协议: POP3(收)/SMTP(发),IMAP(可接受邮件的一部分)
FTP: 文件传输协议
Telnet/ssh:远程登录
嵌入式相关

  • NTP:网络时钟协议
  • SNMP:简单网络管理协议 (实现对网络涉及集中式管理)
  • RTP/RSTP:用于传输音视频的协议 (安防监控)         

6.网络的封包和拆包

TCP/IP协议下的数据包

7.网络预备知识     

1.socket

  • 是一个编程接口,是一个特殊的文件描述符(对他执行IO的操作函数,比如read,write,close等),并不 仅限于TCP/IP协议,面向连接TCP,无连接UDP。   
  • socket代表网络编程的一种资源                                            

分类

  • 1.流式套接字(SOCK_STREAM)。唯一对应TCP 提供了一个面向连接,可靠的数据传输服务,数据无差错,无重复的发送顺序接收。内射击流量控 制,避免数据流淹没慢的接收方。数据被看作式字节流,无长度限制。
  • 2.数据包套接字(SOCK_DGRAM)。唯一对应UDP 提供无连接服务器,数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重 复,顺序发送,可能乱序接收。
  • 3.原始套接字(SOCK_RAW)。对应多个协议,发送穿透了传输层 可以对较低层次协议如IP,ICMP直接访问。

2.IP地址

  • IP地址是Internet中主机的标识,Internet中的主机要与别的机器通信必须具有一个IP地址,IP地址为32 为(Ipv4)或者128位(Ipv6),每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数 据包选择路由
  • 表示的形式:常用点分形式,如202.38.64.10,最后都会转化成一个32位的无符号整数
  • mobileIPV6:local IP(本地注册的IP),roma IP(漫游IP)

特殊IP地址

  • 局域网IP: 192.XXX.XXX.XXX 10.XXX.XXX.XXX
  • 广播IP:xxx.xxx.xxx.255 255.255.255.255(全网广播) 网络风暴
  • 组播IP:224.xxx.xxx.xxx ~239.xxx.xxx.xxx

3.端口号

  • 16位数字,1-65535
  • 为了区分一台主机接收到的数据包应该转交给哪个任务进程处理,使用端口号来区别
  • 预留端口,1-1023 (FTP:24,SSH:22,HTTP: 80,HTTPS :469)
  • 保留端口: 1024-5000 (不建议使用)
  • 可以使用的端口: 5000~65535
  • TCP端口号于UDP端口号独立
  • 网络里的通信是由 IP地址+端口号 来决定的

4.字节序

  • 字节序是指不同的CPU访问内存中的多字节数据时候,存在大小端的问题
  • 如果CPU访问的是字符串,则不存在大小端问题
  • 一般来说X86/ARM : 小端模式
  •  power/miop:arm作为路由时,大端模式
  • 网络传输的时候采用大端模式

字节转换函数

  • 把给定系统所采用的字节序称为主机字节序,为了避免不同类别主机之间在数据交换时由于对于字 节序的不同而导致的差错,引入了网络字节序。
  • 主机字节序到网络字节序
  • u_long htonl(u_long hostlong);
  • u_short htons(u_short short);
  • 网络字节序到主机字节序
  • u_long ntohl(u_long hostlong);
  • u_short ntohs(u_short short);

IP地址的转换

  • inet_aton()

        将strptr所指的字符串转换成32位的网络字节序二进制值

  • inet_addr()

        功能同上,返回转换后的地址 仅适用于IPV4,出错时返回-1。

        局限性:不能用于255.255.255.255的转换

  • inet_ntoa()

        将32位网络字节序二进制地址转换成点分十进制的字符串

  • inet_pton()

        int inet_pton(int af, const char* src ,void* dst)

        将IPV4/IPV6 的地址转换成binary格式

        使用于IPV4/IPV6 能正确处理255.255.255.255的转换问题

        参数:

        1.地址协议族(AF_INET或AF_INET6)

        2.src:是一个指针(填写分点形式的IP地址(主要指IPV4))

        dst:转换的结果给到dst

  • inet_ntop(int af,const void *src,char *dst,socklen_t size)

        把ipv4和ipv6的网络字节序变成本地的字符串形式的IP地址

        参数

        1.af:地址协议族(AF_INET或AF_INET6)

        2.src:是一个指针(32)

        3.dst:输出结果为32位点分形式的IP地址

        4.size:长度

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

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

相关文章

centOS下载与安装

1 下载centOS镜像 The CentOS Project 选择阿里云的镜像 2 下载虚拟机 Vmware workstation VMware - Delivering a Digital Foundation For Businesses 1 下载安装 centOs是一个操作系统,操作硬件的。所以需要有机器,可以使用虚拟机。 2 创建新的虚…

org.mockito:mockito-core 组件安全漏洞及健康度分析

组件简介 维护者mockito组织许可证类型MIT首次发布2008 年 4 月 29 日最新发布时间2023 年 8 月 27 日GitHub Star14159GitHub Fork2478依赖包24,748依赖存储库145,258 org.mockito:mockito-core是一个流行的 Java 模拟框架,它提供了一个简洁的 API 来创建和使用模拟…

【笔记】常用 js 函数

数组去重 Array.from(new Set()) 对象合并 Object.assign . 这里有个细节:当两个对象中含有key相同value不同时,会以 后面对象的key:value为准 保留小数点后几位 toFixed 注意: Number型,用该方法处理完,会…

Windows右键添加用 VSCODE 打开

1.安装VSCODE时 安装时会有个选项来添加,如下: ①将“通过code 打开“操作添加到windows资源管理器文件上下文菜单 ②将“通过code 打开”操作添加到windows资源管理器目录上下文菜单 说明:①②勾选上,可以对文件,目…

O2OA(翱途)开发平台 V8.1正式发布

尊敬的O2OA(翱途)平台合作伙伴、用户以及亲爱的开发小伙伴们,平台 V8.1版本已正式发布。正值8月的最后一周,我们以更安全、更高效、更好用的崭新面貌迎接9月的到来。 O2OA开发平台v8.1版本更注重于对系统级别的安全防护。其中重大的更新,是对…

Re44:数据集 GSM8K 和 论文 Training Verifiers to Solve Math Word Problems

诸神缄默不语-个人CSDN博文目录 论文全名:Training Verifiers to Solve Math Word Problems GSM8K数据集原始论文 OpenAI 2021年的工作,关注解决MWP问题(具体场景是小学(grade school)数学题)&#xff0c…

Java设计模式:四、行为型模式-09:模板模式

文章目录 一、定义:模板模式二、模拟场景:模板模式三、改善代码:模板模式3.0 引入依赖3.1 工程结构3.2 模板模式结构图3.3 爬取商品生成海报实现3.3.1 HTTP获取连接类3.3.2 定义执行顺序的抽象类3.3.3 当当爬取抽象实现类3.3.4 京东爬取抽象实…

java八股文面试[多线程]——synchronized锁升级详细流程

偏向锁 偏向锁是JDK6中的重要引进,因为HotSpot作者经过研究实践发现,在大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低,引进了偏向锁。 偏向锁是在单线程执…

python3.11教程1:python基础语法、程序控制、函数

文章目录 一、Python简介1.1 为什么学习python1.2 python安装与配置1.3 python解释器1.4 命令行参数1.4.1 sys.argv变量1.4.2 -c和-m选项 1.5 解释器的运行环境1.5.1 编码格式1.5.2 编码声明 二、Python基础语法2.1 行结构2.2 变量(标识符)2.3 字节串2.4…

如何让照片动起来?几步操作轻松动起来

现在,许多人都喜欢在社交媒体上分享自己的照片。但是,有时单张静态照片可能无法完全表达出你想要表达的感觉。为了使你的照片更生动有趣,你可以使用一些简单的技巧使它们动起来。下面是几个简单的步骤。 步骤1:打开制作应用并导入…

图像融合去雾、近红外去雾、(近)红外和可见光数据集

今天给大家分享一篇发表在IEEE TMM上的去雾文章Joint Contrast Enhancement and Exposure Fusion for Real-World Image Dehazing 作者从对比度增强和曝光融合的视角来解决图像去雾问题,在真实场景上取得了较好的去雾效果。此外,作者将所提出的方法应用…

Json解析流程

一、拿到了题库 分析一下可以定义的 1、序号,用来区分题目数,每个题有唯一的序号 2、题目,就是下图的Q 3、预设的回答,下图的A 分析完我可以知道有三个字段,分别是int index、string Q、string A。 二、把字段丢到…

MongoDB 会丢数据吗? 在次补刀MongoDB 双机热备

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis ,Oracle ,Oceanbase 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加微信号 liuaustin3 (…

git 查看当前分支最近一次提交的commit SHA

获取当前分支最近一次commit SHA (长度为40个16进制数字的字符)命令如下: git rev-parse HEAD 获取简写(短) commit SHA git rev-parse --short HEAD

灾备中的网络加密是什么?

什么是网络加密? 在网络设计之初,对网络安全的问题考虑的不周全,数据在链路上传输的时候都是明文传输的,稍微有点技术的人,都可以轻松的拿到网络上的数据流量,并进行查看。试想一下,如果我们为…

Revit SDK 介绍:DistanceToPanels 根据距离设置参数

前言 这个例子展示如何计算距离,并将距离的值设置为参数。 内容 选中球形,运行程序,会设置控制高度的参数,距离越远参数值越大。效果如下所示: 核心逻辑: 得到选中物体的位置遍历分割表面内部的 Panel…

DAY07_Maven高级——分模块开发与设计依赖管理聚合与继承属性管理多环境配置与应用私服

目录 一 分模块开发与设计1. 分模块开发的意义问题导入模块拆分原则 2. 分模块开发问题导入2.1 创建Maven模块2.2 书写模块代码2.3 通过maven指令安装模块到本地仓库(install指令) 二 依赖管理1. 依赖传递问题导入 2. 可选依赖问题导入 3. 排除依赖问题导…

HVV行动之态势感知平台(一)

知攻善防,遇强则强! 先介绍一下什么是HVV行动: 它是由公安部牵头的,通过组织红队和蓝队进行为期两周到三周的攻防对抗演习,来检测一些企业单位可能存在的网络漏洞和威胁,进而进行修复和加固,提…

go web之一:hello world快速上手+handle(http.Handle和http.HandleFunc的区别与联系)

前情提要: 需要安装好go的环境和VSCode的go插件。 hello world快速上手 1、创建go.mod 在项目根目录下打开命令行,或者直接用VSCode中的终端。输入命令 go mod init github.com/solenovex/web-tutorial 然后就能看到项目结构中多了一个go.mod 2、…

石油化工智慧安监方案:TSINGSEE青犀视频AI智能识别安全生产风险预警平台建设

一、行业背景 石油化工生产存储企业属于高温、高压、易燃、易爆、有毒的危险行业,其生产装置大型化、密集化、生产工艺复杂、生产过程紧密耦合。随着互联网技术的发展,运用先进的AI、物联网、大数据、云计算等技术手段不断提高石油化工行业的安全监管水…