学习嵌入式的第三十一天——网络编程

网络模型

OSI 模型 

 ===》开放系统互联模型  ==》分为7层:
理想模型  ==》尚未实现
tftp 
b  /etc/passwd 
a /etc/123
应用层  
表示层  加密解密  gzip
会话层  网络断开,连接状态,keep-close keep-alive

传输层tcp  udp  协议  文件    视频,音频
网路层ip   NAT

链路层  交换机  数据的格式化  帧 校验
物理层         100Mb/8  Gbits   100MB 同轴电缆 10Gb    2.4G 5G

应用层:为网络用户提供各种服务,例如电子邮件、文件传输等。
表示层:为不同主机间的通信提供统一的数据表示形式。
会话层:负责信息传输的组织和协调,管理进程会话过程。
传输层:管理网络通信两端的数据传输,提供可靠或不可靠的传输服务。
网络层:负责数据传输的路由选择和网际互连。
数据链路层:负责物理相邻(通过网络介质相连)的主机间的数据传输,主要作用包括物理地址寻址、数据帧封装、差错控制等。该层可分为逻辑链路控制子层(LLC)和介质访问控制子层(MAC)。
物理层,负责把主机中的数据转换成电信号,再通过网络介质(双绞线、光纤、无线信道等)来传输。该层描述了通信设备的机械、电气、功能等特性。

 TCP/IP模型 

 ==》网际互联模型   ==》分为4层:
   实用模型  ===》工业标准
   tcp/ip协议栈
应用层   ====》应用程序
传输层   ====》端口号tcp udp
网络层   ====》IP 地址
接口层   ====》网卡 驱动  1GB
pcap ,,,
2、TCP/IP协议族:
www.taobao.com ---> 192.168.0.19
www.voa.com vpn  
dns 域名解析
DHCP
应用层: HTTP TFTP FTP SNMP DNS ...
传输层: TCP  UDP   56k猫
网络层: IP  ICMP(ping) RIP OSPF IGMP ...
物理层: ARP  RARP  ...   ip--->mac

http ,超文本传输协议 
dns ,域名解析服务 。www.baidu.com --->  192.168.1.200
dhcp ,动态主机配置协议   。分配ip地址。(路由器)
ip  ,互联网协议 。
icmp ,互联网控制管理协议, 网络诊断。
arp, 地址转换协议。 ip->mac 

网络类型

网络基础 ===》A B C D E 类

010 3333344444
IP地址 == 网络位 + 主机位

IP地址的分类: 点分十进制   ipv4  712934
A类: 超大规模性网络
8 8 8 8
1.0.0.0 - 126.255.255.255  126.1.1.1 
126.1.1.2
255.0.0.0    
私有:
10.0.0.0 - 10.255.255.255
127.0.0.1
B类: 大中规模型网络
128.0.0.0 - 191.255.255.255
128.2.1.2  128.2.7.2
255.255.0.0
私有:
172.16.0.0 - 172.31.255.255

C类: 中小规模型网络
192.0.0.0 - 223.255.255.255
255.255.255.0
私有:
192.168.0.0 - 192.168.255.255
静态路由
192.168.0.0
192.168.0.1  网关
192.168.0.255 

D类: 组播和广播
224.0.0.0 - 239.255.255.255
192.168.0.255 ==  255.255.255.255
235.1.2.3
192.168.1.0 
192.168.0.1   网关
192.168.1.255 广播 

E类: 实验
240.0.0.0 - 255.255.255.255

   C 类网络:
    ip地址的前三组是网络地址,第四组是主机地址。
二进制的最高位必须是: 110xxxxx开头
十进制表示范围: 192.0.0.0 -223.255.255.255
默认网络掩码:   255.255.255.0
网络个数: 2^24 个 约 209 万个
主机个数: 2^8  个 254 个+2 ===》1 是网关 1是广播
私有地址: 192.168.x.x 局域网地址。

网络重要命令

ifconfig 查看网卡设备信息 
ping      网络诊断
netstat 查看本机所有的网络链接信息

网络接口

 port分为TCP port / UDP port  范围都是: 1-65535
  约定1000 以内的端口为系统使用。
1、socket  套接字 ==》BSD socket ==》用于网络通信的一组接口函数。

本质文件描述(网络设备)。socket api  application interface


2、ip+port 地址+端口===》地址用来识别主机
     端口用来识别应用程序

网络字节序

大端存储

大小端转换函数:端口号:htons()//host to net short

ip号:inet_addr()

UDP编程

网络编程之 UDP  用户数据报

1、特性: 无链接  不可靠  大数据(一个包大小的数据内比TCP正文更多)   低延迟 网络开销小

2、框架: C/S模式 

bind() 客户端是可选的,服务器端是必选的。

发送接收函数:
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
         const struct sockaddr *dest_addr, socklen_t addrlen);

功能:用于UDP协议中向对方发送数据。
参数:sockfd  本地的套接字id
  buff    本地的数据存储,一般是要发送的数据。
  len     要发送的数据长度
  flags   要发送数据方式,0 表示阻塞发送。

  dest_addr: 必选,表示要发送到的目标主机信息结构体。
  addrlen :目标地址长度。

返回值:成功  发送的数据长度
    失败   -1;


ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
                  struct sockaddr *src_addr, socklen_t *addrlen);

功能:用于UDP协议中获取对方发送的数据。
参数:sockfd 本地的套接字id
  buff   要存储数据的内存区,一般是数组或者动态内存。
  len    要获取的数据长度,一般是buff的大小。
  flags  获取方式,0 阻塞

  src_addr 可选,表示对方的地址信息结构体,
   如果为NULL,表示不关心对方地址。
  addrlen  对方地址信息结构体大小。
   如果对方地址是NULL,则该值也为NULL。
返回值:成功 接收到的数据长度
失败  -1;

int bind(int sockfd, struct sockaddr *my_addr, 
             socklen_t addrlen);
功能:如果该函数在服务器端调用,则表示将参数1相关
  的文件描述符文件与参数2 指定的接口地址关联,
  用于从该接口接受数据。

  如果该函数在客户端调用,则表示要将数据从
  参数1所在的描述符中取出并从参数2所在的接口
  设备上发送出去。

  注意:如果是客户端,则该函数可以省略,由默认
        接口发送数据。
参数:sockfd 之前通过socket函数创建的文件描述符,套接字id
  my_addr 是物理接口的结构体指针。表示该接口的信息。

UDP编程步骤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值