网络编程:网络编程基础

一、网络发展

1.TCP/IP两个协议阶段

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

        用来检测网络传输中差错的传输控制协议TCP

        专门负责对不同网络进行2互联的互联网协议IP

2.网络体系结构

OSI体系口诀:物链网输会示用 

2.1网络体系结构概念

每一层都有自己独立的功能

分层的好处:

1.各层之间独立,每一层都不需要知道下一层如何实现,而只需要知道该层通过层间的接口所提供的服务

2.稳定、灵活性好,当任何一层发生变化时。只需要层间接口关系保持不变,而别的层不受影响

3.易于实现和维护

4.促进标准化工作

2.2 OSI模型

2.3TCP/IP协议体系

2.4TCP/IP常见协议

应用层:

HTTP:超文本传输协议          万维网的数据通信的基础

FTP:文件传输协议                 是用于在网络上进行文件传输的一套标准协议,使用TCP传输

TFTP:简单文件传输协议       是用于在网络上进行文件传输的一套标准协议,使用UDP传输

SMTP:简单邮件传输协议       一种提供可靠且有效的电子邮件传输的协议

传输层:

TCP:传输控制协议               是一种面向连接的、可靠的、基于字节流的传输层通信协议

UDP:用户数据报协议           是一种无连接、不可靠、快速传输的传输层通信协议

网络层:

IP:网际互连协议                       是指能够在多个不同网络间实现信息传输的协议

ICMP:互联网控制信息协议       用于在IP主机、路由器之间传递控制消息、ping命令使用的协议

IGMP:互联网组管理                  是一个组播协议,用于主机和组播路由器之间通信

链路层:

ARP:地址解析协议                         通过IP地址获取对方mac地址

RARP:逆向地址解析协议               通过mac地址获取ip地址

二、TCP和UDP的异同(重点)

共同点:同属于传输层的协议

TCP ----> 稳定

1> 提供面向连接的,可靠的数据传输服务

2> 传输过程中,数据无误、数据无丢失、数据无失序、数据无重复

        1、TCP会给每个数据包编上编号,该编号称之为序列号

        2、每个序列号都需要应答包应答,如果没有应答,则会将上面的包重复发送直到正确为止

3> 数据传输效率低,耗费资源多

4> 数据收发是不同步的

        1、为了提高效率,TCP会将多个较小,并且发送间隔短的数据包,沾成一个包发送,该现象          称为沾包现象

        2、该沾包算法称之为Nagle算法

5> TCP的使用场景:对传输质量比较高的以及传输大量数据的通信,在需要可靠通信的传输场合,一般使用TCP协议

            例如:账户登录,大型文件下载的时候

UDP ----> 快速

1> 面向无连接的,不保证数据可靠的,尽最大努力传输的协议

2> 数据传输过程中,可能出现数据丢失、重复、失序现象

3> 数据传输效率高,实时性高

4> 限制每次传输的数据大小,多出部分直接忽略删除

5> 收发是同步的,不会沾包

6> 适用场景:发送小尺寸的,在接收到数据给出应答比较困难的情况下

例如:广播、通讯软件的音视频

三、网络编程基础

1.字节序

网络字节序规定必须使用大端存储

使用方式:发送端发送多字节整数时,先将多字节整数转为网络字节序,然后在网络中进行传输

接收端接收到网络字节序后,转换为自己的主机字节序进行使用即可

系统提供了有关主机字节序和网络字节序数据之间相互转换的函数

主机:host

网络:network

转换:to

uint32_t htonl(uint32_t hostlong); //将4字节无符号整数的主机字节序转换成网络字节序,参数是主机字节序,返回值是网络字节序

uint16_t htons(uint16_t hostshort); //将2字节无符号整数的主机字节序转换成网络字节序,参数是主机字节序,返回值是网络字节序

uint32_t ntohl(uint32_t netlong); //将4字节无符号整数的网络字节序转换成主机字节序,参数是网络字节序,返回值是主机字节序

uint16_t ntohs(uint16_t netshort); //将2字节无符号整数的网络字节序转换成主机字节序,参数是网络字节序,返回值是主机字节序

2.ip地址

ip地址的分类

1、IPv4:采用一个4字节无符号整数存储,32bit,取值范围:【0,2^32-1】

局域网:local area network (LAN)

广域网:wide area network(WAN)

2、IPv6:采用16字节无符号整数存储,128bit,取值范围: [0, 2^128-1]

ip地址的划分

由于ip地址本身数字比较庞大,而且没有规律,为了更加方便有效的寻径,我们将IP进行二级划分,划分成两部分,分别是网络号和主机号

ip = 网络号 + 主机号

网络号:确定计算机从属的网络,在同一个网络下的多个主机的ip地址网络号都一样

主机号:标识设备在该网络中的主机编号

A类地址

0.0.0.0~127.255.255.255

2^7(网络号)

2^24(主机号)

已经保留不在供给

B类地址

128.0.0.0~191.255.255.255

2^14

2^16

名地址网管中心

C类地址

192.0.0.0~223.255.255.255

2^21

2^8

校园网或企业网、家庭网

D类地址

224.0.0.0~239.255.255.255

组播地址

E类地址

240.0.0.0~255.255.255.255

保留

ip地址点分十进制

为了方便记忆,我们将四字节ip地址的整数的每一个字节转换成十进制数,并使用点分割,组成一个字符串,这个字符串就是ip地址的点分十进制

但是,在网络传输中,ip地址展现的是4字节无符号整数的形式,所以在传输ip地址时,需要考虑字节序的问题

系统给大家提供了点分十进制与4字节无符号整数转换的函数

address:地址

network:网络

to:转换

in_addr_t inet_addr(const char *cp);

功能:将点分十进制的ip地址转换为4字节无符号整数的网络字节序

参数:点分十进制

返回值:对应的4字节无符号整数的网络字节序

char *inet_ntoa(struct in_addr in);

功能:将ip地址的4字节无符号整数的网络字节序转换为点分十进制的字符串

参数:ip地址的网络字节序 返

回值:点分十进制字符串

3.端口号 pork

1> 为了区分同一主机上的多个进程,使用端口号来进行处理

2> 端口号是一个2字节的无符号整数存储,取值范围【0,65535】

3> 网络通信中两个决定性因素:IP + 端口号

4> 端口号的分类:

众所周知的端口号:

0~1023端口我们编程时候不要使用,是那些”VIP“应用程序占了

TCP 21端口:FTP文件传输服务

TCP 23端口:TELNET终端仿真服务

TCP 25端口:SMTP简单邮件传输服务

TCP 110端口:POP3邮局协议版本3

TCP 80端口:HTTP超文本传输服务

TCP 443端口:HTTPS加密超文本传输服务

UDP 53端口:DNS域名解析服务

UDP 69端口:TFTP文件传输服务

TCP和UDP的端口号是相互独立的

可以使用的:1024~49151,就是我们平时编写服务器使用的端口号

临时端口号:49152~65535,这部分是客户端运行时候动态选择的

4.域名解析

域名服务器(Domain Name server):用来处理IP地址和域名之间的转换。

域名系统(Domain Name System,DNS):域名翻译成IP地址的软件

一个域名,可以绑定多个ip

域名结构

例如域名 http: www.baidu.com.cn 从右向左看

cn为高级域名,也叫一级域名,它通常分配给主干节点,取值为国家名,cn代表中国

com为网络名,属于二级域名,它通常表示组织或部门

中国互联网二级域名共40个,edu表示教育部门,com表示商业部门,gov表示政府,军队mil等等

baidu为机构名,在此为三级域名,表示百度

www:万维网world wide web,也叫环球信息网,是一种特殊的信息结构框架。

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

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

相关文章

邮件营销案例分析:哪些因素决定营销效果?

邮件营销案例的关键要素?电子邮件营销案例有哪些? 邮件营销一直是一种重要的推广手段。然而,邮件营销的效果并非一蹴而就,它需要多方面的因素共同作用。AokSend将通过一系列邮件营销案例的分析,探讨哪些因素决定了邮件…

海淘网站#跨境电商#淘宝数据#建站网站#前端源码❀

代购业务近年兴起的一种购物模式,是帮国外客户购买中国商品。主要通过外贸代购模式,把淘宝、天猫等电商平台的全站商品通过API接入到你的网站上,瞬间就可以架设一个有数亿产品的大型网上商城,而且可以把这些中文的商品全部自动翻译…

商家转账到零钱转账场景怎么选择

商家转账到零钱是什么? 商家转账到零钱功能整合了企业付款到零钱和批量转账到零钱,支持批量对外转账,操作便捷。如果你的应用场景是单付款,体验感和企业付款到零钱基本没差别。 商家转账到零钱的使用场景有哪些? 商…

【强化学习2--基于策略梯度的方法】

文章目录 深度强化学习---基于策略梯度的方法为什么要用策略梯度方法?策略梯度方法的优势策略梯度定理REINFORCEActor-CriticA2C:Advantage Actor-CriticPPO总结 深度强化学习—基于策略梯度的方法 本篇主要介绍单智能体强化学习——基于策略梯度的方法。 为什么要…

如何利用百度SEO优化技巧将排到首页

拥有一个成功的网站对于企业和个人来说是至关重要的,在当今数字化的时代。在互联网上获得高流量和优质的访问者可能并不是一件容易的事情,然而。一个成功的SEO战略可以帮助你实现这一目标。需要一些特定的技巧和策略、但要在百度搜索引擎中获得较高排名。…

手写简易操作系统(六)--内存分页

前情提要 上一节我们讲到了获取物理内存,这节我们将开启内存分页 一、内存分页的作用 内存分页是一种操作系统和硬件协同工作的机制,用于将物理内存分割成固定大小的页面(通常为4KB)并将虚拟内存空间映射到这些页面上。内存分页…

【更新】上市公司“宽带中国”战略数据集(2000-2022年)

参照李万利(2022)、薛成(2020)等人的做法,根据企业所在城市入选“宽带中国”试点战略的批次构建DID。如果样本期间内企业所在城市被评选为“宽带中国” 试点城市,则该地区企业样本在入选当年及以后年份取1&…

打卡学习kubernetes——了解k8s基本概念

目录 1 Container 2 Pod 3 Node 4 Namespace 5 Service 6 Label 7 Annotations 8 Volume 1 Container Container(容器)是一种便携式、轻量级的操作系统级虚拟化技术。它使用namespace隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而…

Focal and Global Knowledge Distillation forDetectors

摘要 文章指出,在目标检测中,教师和学生在不同领域的特征差异很大,尤其是在前景和背景中。如果我们 平等地蒸馏它们,特征图之间的不均匀差异将对蒸馏产生负面影响。因此,我们提出了局部和全局蒸馏。局部蒸馏分离前景和…

【Spring Boot系列】快速上手 Spring Boot

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

macOS - 获取硬件设备信息

文章目录 1、CPU获取方式 一: system_profiler获取方式二:sysctl, machdepmachdep 2、内存3、硬盘4、显卡5、声卡6、光驱7、系统序列号8、型号标识符9、UUID 等信息 10. 计算机名称 1、CPU 获取方式 一: system_profiler % syst…

深信服技术认证“SCCA-C”划重点:深信服应用交付AD

为帮助大家更加系统化地学习云计算知识,高效通过云计算工程师认证,深信服特推出“SCCA-C认证备考秘笈”,共十期内容。“考试重点”内容框架,帮助大家快速get重点知识 划重点来啦 *点击图片放大展示 深信服云计算认证(S…

中国工程精英智创数字工厂——2023纵览基础设施大会暨光辉大奖赛观察 (下)

中国工程精英智创数字工厂 ——2023纵览基础设施大会暨光辉大奖赛观察 (下) 吴付标 中国制造的尽头是智能化、智慧化,这一趋势正在加速前进。2022年,中国以50座达沃斯论坛盖章认证的“灯塔工厂”数量冠绝全球,而“数…

活动预告:如何培养高质量应用型医学人才?

在大数据时代与“新医科”建设的背景下,掌握先进的医学数据处理技术成为了医学研究与应用的重要技能。 为了更好地培养社会所需要的高质量应用型医学人才,许多高校已经在广泛地开展面向医学生的医学数据分析教学工作。 在“课-训-赛”育人才系列活动的…

详解Python中%r和%s的区别及用法

首先看下面的定义: %r用rper()方法处理对象 %s用str()方法处理对象 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的语法,则会发生SyntaxError 异常) 某对象没有适于人…

面试常问:为什么 Vite 速度比 Webpack 快?

前言 最近作者在学习 webpack 相关的知识,之前一直对这个问题不是特别了解,甚至讲不出个123....,这个问题在面试中也是常见的,作者在学习的过程当中总结了以下几点,在这里分享给大家看一下,当然最重要的是…

面试六--TCP粘包问题

1.流式传输协议 流式传输协议(Streaming Protocol)是一种用于在网络上传输数据的通信协议,它允许数据以连续的流的形式进行传输,而不是一次性发送完整的数据包。流式传输协议即协议的内容是像流水一样的字节流,内容与内…

代码随想录day19(2)二叉树:二叉树的最大深度(leetcode104)

题目要求:求出二叉树的最大深度 思路:首先要区分二叉树的高度与深度。二叉树的高度是任一结点到叶子结点的距离,而二叉树的深度指的是任一节点到根节点的距离(从1开始)。所以求高度使用后序遍历(从下往上&…

【小白学机器学习9】自己纯手动计算验证,EXCEL的一元线性回归的各种参数值

目录 0 目标 1 构造模型 1.1 构造模型的思路 1.2 具体模型构造的EXCEL公式和过程 2 直接用EXCEL画图,然后生成趋势线的方式进行回归分析 2.1 先选择“观测值Y”的数据,用散点图或者折线图作图 2.2 然后添加趋势线和设置趋势线格式 2.3 生成趋…

ttkefu如何更改头像

ttkefu头像如何更改: 第一种:可以直接点击头像-更改框就出来了