网络基础知识

2023-11-19

网络编程

2.网络的体系结构(七层模型,四层模型)

//因为网络通信比较麻烦,所以网络采用分层思想

OSI开放系统互联网模型(七层模型)

高层:
应用层
表示层
会话层

低层:
传输层
网络层
数据链路层
物理层(驱动,网卡)

仅仅是一种理想状态,现实中并没有实现

TCP/IP协议族体系结构:(四层模型)//是Internet事实上的工业标准

用户态:
应用层 (http,ssh,tftp)
inux内核态:
传输层 (tcp,udp) 决定将数据交给哪一个任务去执行
网络层 (ip) 建立网络连接(一对一)
网络接口和物理层(以太网,驱动) 屏蔽硬件差异

网络采用分层思想:(封包和拆包)
.1每一层实现不同的功能,对上一层的数据做透明传输
.2每一层向上层提供服务,并且使用下层提供的服务

socket通信

他的本质就是一个函数调用,它可以给我们返回一个特殊的网络描述符,他混合了网络层和传输层,方便开发人员方便高效的进行网络传输
网络通信中需要注意的问题

.1字节序大小端问题

小端序:正序存放
大端序:倒序存放

数据传输: 本地序1->网络序->本地序2
//一般来说我们使用的机器都是小端序,网络序都是大端序

#include <arpa/inet.h>
   
   host
   network
   long
   short

将一个无符号短整形数从网络字节顺序转换为主机字节顺序
uint16_t ntohs(uint16_t netshort);
将一个无符号短整形数从网络字节顺序转换为主机字节顺序
uint32_t ntohl(uint32_t netlong);
将一个无符号短整形数从网络字节顺序转换为主机字节顺序。
uint_16t ntohs(uint16_netshort)
将一个无符号短整形数从网络字节顺序转换为主机字节顺序。
uint_32t ntohs(uint32_t netlong)

	 //单字节数据不需要考虑大小端序

ip地址转换函数
in_addr_t inet_addr(const char *cp);//将ip字符串转换为整型ip值
net_aton() inet_ntoa();//不是很建议使用
int inet_pton(AF_INET,ip字符串,转换之后的ip值的地址);
const char *inet_ntop(AF_INET,ip整型值的地址,ip字符串,ip字符串大小);
/*例子:
unsigned int ip;
char buf[50];

	inet_pton(AF_INET,"0.0.0.0",&ip1);
	
	inet_ntop(AF_INET,&ip1,buf,50);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络基础知识 的相关文章

  • MCU震荡电路的晶振边的22pf电容的作用

    振荡电路用于实时时钟RTC 对于这种振荡电路只能用32 768KHZ 的晶体 晶体被连接在OSC3 与OSC4 之间而且为了获得稳定的频率必须外加两个带外部电阻的电容以构成振荡电路 32 768KHZ的时钟晶振产生的振荡信号经过石英钟内部分

随机推荐

  • (3)numpy数组的索引和切片操作

    在开始之前 先导入numpy第三方包 import numpy as np 索引 谈到索引 我们就应该想到 在python语言中 是如何对列表进行索引的 接下来将会对python列表索引和numpy数组索引进行比较 先定义一个numpy数组
  • 查看linux中的TCP连接数

    一 查看哪些IP连接本机 netstat an 二 查看TCP连接数 1 统计80端口连接数 netstat nat grep i 80 wc l 2 统计httpd协议连接数 ps ef grep httpd wc l 3 统计已连接上的
  • 一招秒开GitHub,永久解决!

    步骤 目录 步骤 1 打开电脑 进入如下的路径 2 将hosts 复制到桌面 3 把hosts文件移动到桌面后etc文件夹下的hosts文件不存在 已经被移动到桌面了 4 在移到桌面的hosts文件里面进行修改 5 再把修改好的hosts文
  • mysql tomcat 自动重连_Java开发网 - tomcat连接池支持重新连接数据库吗?

    Posted by pigengler Posted on 2006 04 20 15 23 我做了一个测试 程序使用tomcat的连接池 factory org apache commons dbcp BasicDataSourceFac
  • 微信api ----统一下单

    应用场景 除被扫支付场景以外 商户系统先调用该接口在微信支付服务后台生成预支付交易单 返回正确的预支付交易回话标识后再按扫码 JSAPI APP等不同场景生成交易串调起支付 状态机 支付状态转变如下 接口链接 URL地址 https api
  • pandas中的data.corr()函数方法说明及使用

    数据相关性分析中 经常用到data corr 函数 data corr 表示了data中的两个变量之间的相关性 取值范围为 1 1 取值接近 1 表示反相关 类似反比例函数 取值接近1 表正相关 DataFrame corr 函数使用说明如
  • 国际版阿里云/腾讯云:阿里云流量包是用来做什么

    阿里云流量包是用来做什么 阿里云同享流量包是一种通用流量套餐 同享流量包具有多地域和多产品流量抵扣的优势 同享流量包不仅能够抵扣云服务器ECS发生的流量 还能够抵扣弹性公网IP和负载均衡SLB发生的流量 同享流量包掩盖产品规模广 同享流量包
  • Qt 设置:两个窗口位置重合

    目录 Qt 设置 两个窗口位置重合 QT向界面中嵌套新的界面 QT向界面中嵌套新的界面 https www cnblogs com bob jianfeng p 11609012 html 第一步 先进入ui编辑界面 加入一个水平或者垂直的
  • 数据预处理与特征工程—10.图像切割与特征提取

    文章目录 引言 一 图像切割 二 特征提取 1 各阶颜色矩的计算公式 三 python实现 水质图像数据 百度网盘链接提取码 1234 引言 本文以水质图像为例 进行图像切割与特征提取 一 图像切割 一般情况下 采集到的水样图片包含盛水容器
  • 深入研究C++多态(虚函数和虚继承)

    文章目录 多态的引入 虚函数表 几种常见继承关系中的类内存分布 单继承 多继承 菱形继承 总结 作者 狗子孙 链接 https www jianshu com p 02183498a2c2 来源 简书 简书著作权归作者所有 任何形式的转载都
  • 如何彻底删除JetBrains系列软件教程

    mac安装JetBrains系列软件后 如果JetBrains系列软件出了问题需要重新安装 有时候软件删除重装后 JetBrains系列软件仍然会打不开的问题 很是困扰 接下来为您带来了mac上如何彻底删除IntelliJ IDEA等软件的
  • Char.IsDigit与Char.IsNumber的区别

    需要判断Char是否为数字 查看了下MSDN 发现有三种方法 Char IsDigit aChar 指示指定字符串中位于指定位置处的字符是否属于十进制数字类别 Char IsNumber aChar 指示指定字符串中位于指定位置的字符是否属
  • redis cluster知识

    一 架构 Redis Cluster使用 Slot 的概念 作为一个KV系统 它把每个key的值hash成0 16383之间的一个数 这个hash值被用来确定对应的数据存储在哪个节点中 集群中的每个节点都存储了一份类似路由表的东西 描述每个
  • 你知道bdsm吗

    是的 我知道 BDSM BDSM 是一种性癖好 通常指一组相关的性癖好 包括 较强的角色扮演 较轻的或较重的身体触摸 以及在性活动中的安全词 BDSM 也可以包括授权和自我控制 以及建立信任和良好的沟通 BDSM 可能涉及各种形式的挑逗 包
  • 4. Spring Boot Security角色管理持久化实现

    1 概述 在第三章里大家学会了怎么初步使用Spring Boot 结合Spring Security来实现权限控制和角色管理 但是我们发现无论是使用那种方式角色管理和权限控制全部是在 xml中或则 配置类中写的 没有实现持久化 本次就为大家
  • Conversion to Dalvik format failed with error

    Conversion to Dalvik format failed with error 1解决方法 第一种情况包导入错误 点击工程 gt build path gt libraries gt 选中android1 x 或者android
  • 解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录

    1 将google 管理后台的 sha 1 证书值 记录下来 2 根据Google sha 1 证书值 获取 Facebook 的登录需要使用的散列值 使用以下工具 http tomeko net online tools hex to b
  • MySQL——idea连接MySQL

    选择MySQL 连接数据库 选择数据库 编写SQL语句
  • Anaconda 命令行常用指令

    Anaconda 命令行指令 Anaconda Prompt 命令行 一 基础指令 1 查看Anaconda安装版本 conda version 2 查看已经安装的环境 conda env list 方法1 conda info env 方
  • 网络基础知识

    网络编程 2 网络的体系结构 七层模型 四层模型 因为网络通信比较麻烦 所以网络采用分层思想 OSI开放系统互联网模型 七层模型 高层 应用层 表示层 会话层 低层 传输层 网络层 数据链路层 物理层 驱动 网卡 仅仅是一种理想状态 现实中