网络 编程

网络编程:就是两个不在同一台主机的进程进行通信。

网络基础:

协议:分布不同主机之间共同遵守的,基于网络,约定ip和port,约定对话格式

如何通过网络进行通信:分层

OSI七层结构:物链网输会示用

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

TCP/IP四层结构:

网络接口层(相当于物理层加数据链路层),网络层,传输层,应用层。

ip:ipv4是32位的,ipv6是128位的

ip地址的表示是点分十进制的方式,就是每一个字节用来分割,转换成十进制来表示,

点分十进制的地址转换成整形:inet_aton();整型转化成点分十进制:inet_ntoa();

ipv4地址划分:

A:一个字节的网络号+三个字节的主机号,要求以0开头,范围0 - 127;

B:两个字节的网络号+两个字节的主机号,要求以10开头,范围128 - 191

C:三个字节的网络号+一个字节的主机号,要求以110开头,范围192 - 223

D:组播地址,要求1110开头,224 - 239

E:科学研究

ipv4的特殊地址:127.0.0.1环回测试地址,测试本机的TCP/IP协议栈是否是通的。

255.255.255.255是广播地址

0.0.0.0是本地任意地址

port端口:用来区分服务,0 - 65535

0 - 1024是专用端口,周知端口

1025 - 65535是用户端口

跨主机传输数据类型:

不能传递指针,

大小端未必一致:

通常pc机都是小端存储的,嵌入式设备大端居多

网络编程中如果要发送的数据是大于1字节的,需要将数据转化成网络字节序再发送,在接受的时候转换成本地字节序。

网络字节序通常是大端的。

本地字节序转换成网络字节序:htons和htonl

网络字节序转换成本地字节序:ntohs和ntohl

数据类型要明确:

uint8_t,uint16_t,u32

结构体对齐因编译版本而异:

单字节对齐:struct {}__attrbute__((packed))

网络编程:

linux秉承着降低网络编程的难度,一切皆文件,将网络编程抽象了成一个文件叫socket。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值