网络基础知识

网络编程

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);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值