c语言网络编程学习整理 网络编程结构框架 一些常见协议的介绍

1.网络分层:osi体系结构

重点:网络层,传输层。

 口诀:物数网传会表应。

可是osi体系过于理想,不过其为原型依旧通用:

TCP/IP协议 是Internet事实上的工业标准

 

2.TCP/IP 4层模型

1)网络接口与物理层

也叫做网络访问层

功能:包括ip地址与物理地址的映射(MAC),以及将上一层的ip报文封装层帧,转换成二进制比特流传输

MAC:物理地址,48bit全球唯一,网络设备的身份标识(cmd ---> ipconfig/all),由厂商出厂后确定。

切换网络后,ip地址改变,MAC地址不变

ARP/RARP 地址解析协议/逆向地址解析协议:

ARP(Address Resolution Protocol):通过ip地址获取其对应的mac地址。

RARP(Reverse Address Resolution Protocol):通过mac地址获取其对应的ip地址。

2)网络层

负责在主机之间的通讯中选择数据包传输的路径,即选择路由。

i. IP协议(Internet Protocol)

ip协议根据数据包的目的ip地址来决定如何投递数据包。

如果数据包不能直接投递给目标主机,那么ip协议就为他寻找下一个合适的下一跳路由器。

路由器工作是依据哪一层:网络层

IP地址

IP地址是因特网中主机的标识,每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由。

1. IP地址的分类
  1. IPv4:采用4个字节的无符号整数存储,32bit。[0, 2^32-1] == >42.9亿多个
    1. 局域网:为了解决IP地址不够用的问题,让多台主机使用一个IP地址。
      1. LAN:local area network 局域网
      2. WAN:wide area network 广域网
  2. IPv6:采用16个字节的无符号整数存储,128bit, IPv4不兼容IPv6。

2. IP地址划分

IP地址的二级划分:将32位IP地址分为两部分,为了寻径更加有效。

IP = 网络号 + 主机号

网络号:确定计算机从属的网络,

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

ABC类为基本类,可以分配给主机使用。

D类不表示网络,用于组播,多播组

E类保留或实验室使用。

 

3. 点分十进制

为了方便记忆,使用点分十进制。

将32位IP地址的二进制数,以8bit为一组,用十进制表示,利用点分割。

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地址:不能分配给主机使用,掐头去尾

  1. 网络地址:有效网络号 + 全是0的主机号, 代表该网络
    1. 192.168.8.234 ---》 192.168.8.0
  1. 广播地址:有效网络号 + 全是1的主机号,向该IP地址发送数据,代表向该网络下的所有主机发送。
    1. 192.168.8.234 ---》 192.168.8.255
4. 子网掩码(重点!)

由于二级IP地址主机的基数还是比较大,所以引入了另外一个概念,子网掩码。

子网掩码可以将二级IP地址划分成三级IP地址。

IP = 网络号 + 子网号 + 主机号

子网号比二级划分更加灵活,用户可以自行设置,可以选择划分,也可以选择不划分。

子网掩码:用来划分IP地址中,哪一部分是网络号,哪一部分是子网号,哪一部分是主机号的。

1)子网掩码的格式
  1. 与IP地址一样长的32位整数,由一串连续的1,后面跟着一串连续的0组成。
  2. 默认子网掩码中,1的个数与IP地址中网络号的个数一致。0的个数与IP地址中主机号的个数一致。
5.域名系统

由于使用IP地址来指定计算机不方便人们记忆,且输入时候容易出错,用字符标识网络种计算机名称方法。

这种命名方法就像每个人的名字,这就是域名(Domian Name)

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

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

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

域名结构

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

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

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

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

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

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

6.网关

网关是一个网络通向其他网络的IP地址

目前家用路由器一般使用192.168.1.1和192.168.0.1作为LAN接口的地址,这个两个也是最常用的网关地址。

ii. ICMP协议(Internet Control Management Protocol)

英特网控制管理协议,ping检测网络就是用这个协议

用于在IP主机、路由器之间传递控制消息

iii. IGMP协议(Internet Group Management Protocol)

英特网分组管理协议,组播,广播。

3)传输层

负责提供应用程序之间通讯服务,这种服务又称之为端到端。

传输层与网络层不同,传输层只关心通讯的 起始端 和 目的端,并不在乎数据包的传输中转过程。

TCP:

(transmit contort Protocol 传输控制协议):提供面向连接的,一对一的可靠数据传输协议。

UDP:

(user datagram Protocol 用户数据报协议):提供无连接的,不可靠的尽力的传输协议,但是效率更高

4)应用层

负责处理应用程序的逻辑

i. HTTP/HTTPS

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

http:明文发送, https加密传输

ii. 邮件协议

收:POP3(post office protocol)邮局协议第三个版本

从服务器接收右键,接收完后服务器就没有这个邮件了;

发:SMTP(简单邮件传输协议)

IMAP:

交互式邮件存储协议,与POP3类似的邮件访问标准协议之一。

收取邮件后,服务器上邮件依然存在,如果删除、标记服务器也会做相应操作。

iii. FTP(FILE Transfer Protocol)

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

iv. TFTP

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

v.DNS:域名解析

Telnet/ssh :远程登录

5) 网络封包与拆包

MTU :

Maximum Transmit Unit 最大传输单元

物理接口(数据链路层)提供给上层(网络层(IP层))最大一次传输数据的大小。

规定了数据链路层所能传送最大数据长度

以太网为例,缺省MTU=1500字节,这是以太网接口对IP层的约束

如果IP层

如果IP层>1500字节需要发送,需要分片才能发送(分片:帧)

限制数据包大小的协议是什么协议:MTU MSS

MSS:

Maximum Segment Size 最大报文长度

TCP提交给IP层最大分段大小,指TCP报文所允许传送数据部分最大长度。

不包含TCP头,MSS式TCP来限制应用层最大发送字节数。

如果MTU=1500,则MSS = 1500-20(IP header)-20(TCP header) =1460字节

如果应用有2000字节要发,需要2 Segment

第一个TCP Segment = 1460 第二个TCP Segment = 540

 

应用有2000字节要发,需要2 Segment

第一个TCP Segment = 1460 第二个TCP Segment = 540

3.TCP和UDP的异同点(重点!!!)

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

TCP --- 稳定

  1. 提供面向连接的,可靠的数据传输服务;
  2. 传输过程中,数据无误,数据无丢失,数据无失序,数据无重复到达。
    1. TCP会给每个数据包编上编号,该编号称之为序列号
    2. 每个序列号都需要应答包应答,如果没有应答,则会将上面的包,重复发送直到正确为止。
  3. 传输效率低,耗费资源多。
  4. 数据的收发是不同步的.
    1. 为了提高效率,TCP会将多个比较小,且发送间隔短的数据包,沾成一个包发送,该现象称之为粘包现象。
    2. 该粘包算法称之为Nagle算法。

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

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

UDP --- 快速

  1. 无连接的,不保证数据可靠的,尽力的传输协议。
  2. 数据有可能在传输过程中丢失,或者出现数据重复,数据失序等情况。
  3. 传输效率高,实时性高。
  4. 限制每次传输的数据大小,多出部分直接忽略删除。
  5. 收发是同步的。不会粘包。

UDP的适用场景:发送小尺寸的,在接收到数据给出应答比较困难的环境下。

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java生成 word报告

Java生成 word报告 一、方案比较二、Apache POI 生成三、FreeMarker 生成 在网上找了好多天将数据库信息导出到 word 中的解决方案,现在将这几天的总结分享一下。总的来说,Java 导出 word 大致有 5 种。 一、方案比较 1. Jacob Jacob 是 Java-COM Bri…

7款炫酷的前端动画特效分享(三)(附效果图及在线演示)

分享7款好玩的前端动画特效 其中有CSS动画、SVG动画、js小游戏等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 CSS3模仿四季交替动画 基于HTML5CSS3实现的卡通风格一年四季交替动画特效 以下效果图只能体现框架的…

ThreadPoolExecutor 学习

ThreadPoolExecutor 是开发中最常用的线程池,今天来简单学习一下它的用法以及内部构造。 1、线程池存在的意义? 一般在jvm上,用户线程和操作系统内核线程是1:1的关系,也就是说,每次创建、销毁线程的时候&am…

10.WEB渗透测试-Linux基础知识-Linux用户权限管理(下)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:9.WEB渗透测试-Linux基础知识-Linux用户权限管理(上)-CSDN博客 ch…

Linux进程详细介绍

文章目录 Linux进程1、计算机体系结构和操作系统管理1.1、计算机体系结构 -- 硬件1.2、操作系统(Operator System) -- 软件 2、进程2.1、进程基本概念2.2、进程标识符2.2.1、获取当前进程标识符和当前进程的父进程标识符2.2.2、通过系统调用创建进程 -- …

微信小程序开发学习笔记《19》uni-app框架-配置小程序分包与轮播图跳转

微信小程序开发学习笔记《19》uni-app框架-配置小程序分包与轮播图跳转 博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读uni-app对应官方文档 一、配置小程序分包 分包可以减少小程序首次启动时的加载时间 为此&#…

Google Play上架:自查封号政策解析(高风险行为之不允许破坏Google Play生态系统中用户信任度的应用或应用内容)

本文章提供给近期被封号的开发者们,希望能带来帮助,有其他的自查方向后续也会发布出来。 ——————————————————————————————————————— 用户数据设备和网络滥用 用户数据 设备和网络滥用

前端学习之HTML(第二天)--多媒体标签和表格标签

注&#xff1a;里面的注释是对各个标签的解释 多媒体标签 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title> </head> <body> <!-- audio是音频可以填写绝对路径也可填写相对路径 --> &l…

解决微软活动目录管理工作中常见问题

微软活动目录&#xff08;AD域&#xff09;是一种由微软的用于管理网络中用户、计算机、资源等的目录服务。活动目录被广泛应用于企业内部的网络管理中&#xff0c;尤其是对于使用微软产品的企业来说&#xff0c;活动目录是至关重要的基础设施之一。 因此&#xff0c;以微软为…

索引下推 INDEX CONDITION PUSHDOWN

索引下推 (INDEX CONDITION PUSHDOWN&#xff0c;简称ICP)是在 MySQL5.6 针对扫描索引下推二级索引的一项优化改进。 用来在范围查询时减少回表的次数。ICP适用于 MYISAM和INNODB.

ref和reactive用哪个?

ref和reactive用哪个? 1.&#x1f916;GPT&#x1f916;:ref和reactive用哪个根据数据类型而定 ref 用于将基本类型的数据&#xff08;如字符串、数字&#xff0c;布尔值等&#xff09;转换为响应式数据。使用 ref 定义的数据可以通过 .value 属性访问和修改。 reactive 用于…

JavaScript 学习笔记(7)

一模板字符串 1.用途 允许在字符串中嵌入表达式和变量&#xff0c;是一种方便的字符串语法 2.用法 模板字符串使用反引号 作为字符串的定界符分隔的字面量&#xff1b;模板字面量是用反引号&#xff08;&#xff09;分隔的字面量&#xff0c;允许多行字符串、带嵌入表达式…

ElasticSearch之分布式查询过程分析

写在前面 本文一起看下es分布式查询的过程。 1&#xff1a;分布式搜索过程 分布式搜索分为两个阶段&#xff0c;query和fetch,即query-then-fetch。 假定primary shard3,replica shard1&#xff0c;即3个主分片&#xff0c;1个副本分片。 1.1&#xff1a;query阶段 某data …

二叉树——700. 二叉搜索树中的搜索、98. 验证二叉搜索树

二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。 示例 1: 输入&#xff1a;root [4,2,7,1,3], val 2 …

【论文精读】基于知识图谱关系路径的多跳智能问答模型研究

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

96道前端面试题,前端开发工作内容

HTML、CSS、JS三大部分都起什么作用&#xff1f; HTML内容层&#xff0c;它的作用是表示一个HTML标签在页面里是个什么角色&#xff1b;CSS样式层&#xff0c;它的作用是表示一块内容以什么样的样式&#xff08;字体、大小、颜色、宽高等&#xff09;显示&#xff1b;JS行为层…

js形参传递特殊字符

在前端我们给其他页面传值或者传数据到后台的时候&#xff0c;字符串经常将一些特殊符号识别成字符集。这种情况下会将数据打断或者打乱&#xff0c;比如字符串里面包含*/&这些符号的时候就会错误。 我们可以通过将字符中的特殊字符替换成十六进制的字符&#xff0c;一些特…

【详识JAVA语言】String类2

常用方法 字符串的不可变性 String是一种不可变对象. 字符串中的内容是不可改变。字符串不可被修改&#xff0c;是因为&#xff1a; 1. String类在设计时就是不可改变的&#xff0c;String类实现描述中已经说明了 以下来自JDK1.8中String类的部分实现&#xff1a; String类…

马士超:符合国际标准的沉浸式音频HOLOSOUND的发展与未来 | 演讲嘉宾公布

一、3D音频 3D 音频分论坛将于3月27日同期举办&#xff01; 3D音频技术不仅能够提供更加真实、沉浸的虚拟世界体验&#xff0c;跨越时空的限制&#xff0c;探索未知的世界。同时&#xff0c;提供更加丰富、立体的情感表达和交流方式&#xff0c;让人类能够更加深入地理解彼此&a…

【Python 识别某滑块的距离】今天来换思维搞滑块,不用识别库,几行代码就能搞定,仅供学习

写作日期&#xff1a;2024.03.05 使用工具&#xff1a;Python 温馨提示&#xff1a;此方法仅对有完整图和缺口图的滑块有效&#xff0c;可精准识别出缺口要滑动的距离 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES处理&#xff08;直接…