当前位置: 首页 > news >正文

Linux--网络编程-字节序

进程间的通信:
管道、消息队列、共享内存、信号、信号量。

特点:都依赖于linux内核。
缺陷:无法多机通信。

一、网络编程:

1、地址:基于网络,ip地址+端口号。

端口号作用:
一台拥有ip地址的主机可以提供许多服务,如web服务、FTP服务、SMTP服务等。
这些服务完全通过1个ip地址来实现。主机区分不同的网络服务通过“ip地址+端口号”来区分的。
端口提供了一种访问通道。
服务器一般都是通过知名端口号来识别的。
例如,对于每个TCP/IP实现来说,

FTP服务器的TCP端口号都是21,
每个Telnet服务器的tcp端口号都是23
每个TFTP(简单文件传送协议)服务器的UDP端口号都是69.

2、数据:协议 ( HTTP、TCP、UDP )
(数据格式,非常成熟,操作系统已经搞好)
TCP面向连接,a拨号给b,讲电话。连接可靠,传送的信息量准确。

UDP面向报文,a与b连接,发短信形式。连接不可靠,数据量大,有各自的应用场景。

TCP/UDP对比:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前,不需要建立连接。
2、TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,按序到达。UDP尽最大努力交付,即不保证可靠交付。
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使主机的发送速率降低(对实时应用很有用,如ip电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一、多对多的交互通信。
5、TCP首部开销20字节;UDP首部开销小,8字节。
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

入门网络编程:
socket套接字网络编程(套接字网络编程),一般用到TCP协议或UDP协议。

二、字节序

概述
字节序是指多字节数据再计算机内存中存储或网络传输时各字节的存储顺序。

常见序:
1、Little endian(小端字节序):将低序字节存储在起始地址
2、Big endian(大端字节序):将高序字节存储在起始地址
网络字节序相当于大端字节序
x86系列cpu都是小端字节序

通过下面的4个函数可以实现主机字节序和网络字节序之间的切换。
有时可以使用INADDR_ANY,INADDR_ANY指定地址让操作系统自己获取。


#include <netinet/in.h> uint16_t htons(uint16_t host16bititvalue);//返回网络字节序的值 
uint32_t htonl(uint32_t host32bititvalue);//返回网络字节序的值
uint16_t ntohs(uint16_t net16bitvalue);//返回主机字节序的值
uint32_t ntohl(uint32_t net32bitvalue);//返回主机字节序的值 
/*
h :host,
n :net,
s :short(两个字节)
l :long(4个字节)
*/

例:
(0x:十六进制)
在内存中双字0x01020304(DWORD)的存储方式:
内存地址:
4000&4001&4002&4003
LE 04 03 02 01 (小端字节序:低字节序放在低地址)
BE 01 02 03 04 (大端字节序:反之)
存储的数据:0x01020304
01为高字节,04为低字节
字节单位:(byet)1字节 = 8 bit
在这里插入图片描述

http://www.lryc.cn/news/181314.html

相关文章:

  • python实现http/https拦截
  • 农产品团购配送商城小程序的作用是什么
  • 使用van-dialog二次封装微信小程序模态框
  • 生鲜蔬果同城配送社区团购小程序商城的作用是什么
  • Unity实现设计模式——状态模式
  • 差分数组的应用技巧
  • 斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 10 Mining Social-Network Graphs
  • DFS:842. 排列数字
  • pytorch之nn.Conv1d详解
  • H5生成二维码
  • Three.js加载360全景图片/视频
  • 北大硕士7年嵌入式学习经验分享
  • 华为鸿蒙手表开发之动态生成二维码
  • 2023-09-28 monetdb-databae的概念和作用-分析
  • 2024级199管理类联考之数学基础(上篇)
  • RFID技术引领汽车零部件加工新时代
  • python中使用matplotlib绘图
  • Qt Creator 使用技巧
  • 来看看双阶段目标检测算法趴
  • python利用matplotlib绘图,对于中文和负号不显示,显示方框“口口”完美解决办法!!
  • 【数组及指针经典笔试题解析】
  • Transformer学习-self-attention
  • Spring Boot:利用JPA进行数据库的增改
  • 列表的增删改查和遍历
  • 获取网卡上的IP、网关及DNS信息,获取最佳路由,遍历路由表中的条目(附源码)
  • 保姆级 -- Zookeeper超详解
  • 【通意千问】大模型GitHub开源工程学习笔记(2)--使用Qwen进行推理的示例代码解析,及transformers的库使用
  • 从0开始python学习-23.selenium 常见鼠标的操作
  • 电气基础——电源、变压器、接触器、断路器、线缆
  • 步力宝科技爆款产品定位,开创智能物联网新商业