Linux嵌入式网络 _ 网络基础
一、网络发展历史和分层
1、Internet 的历史
- Initernet — 冷战的产物
2、网络互联促成了TCP/IP协议的产生
3、网络互联促成了TCP/IP协议的产生
4、网络的体系结构
OSI开放系统互连模型
- 二层交换机 一般对应OSI七层模型中 的数据链路层; 较便宜 偏硬件
- 三层交换机 一般对应OSI七层模型中 的网络层; 有贵有便宜 偏软件
TCP/IP协议时Internet事实上的工业标准
一共有四层:
- OSI模型 与 TCP/IP模型的之间的联系:
二、TCP/UDP特点
1、TCP/IP模型中 各层之间的 主要协议
— 各层中 比较常用的协议:
2、TCP协议的特点
3、UDP协议的特点
4、应用层常用通信协议
5、TCP/IP协议通信模型
6、网络传输 的封包与拆包 ------- 两主机网络传输实例
三、网络编程的预备知识
1、socket
— socket 是网络编程的一种资源;
— 是一个应用编程接口;是一种特殊的文件描述符(可以使用 read() write() close() 等操做);
— 面象连接(Transmission Control Protocol — TCP/IP)
— 并不仅限于TCP/IP;
— 无连接(User Datagram Protocol — UDP 和 Inter—network Packet Exchange — IPX)
- Socket 的类型
- 流式套接字(SOCK_STREAM) :提供了一个面象连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流量淹没慢的接收方。数据被看作字节流,无长度限制。
- 数据套接字(SOCK_DGRAM): 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收;
- 原始套接字(SOCK_RAM) :可以对较低层次协议如IP 、ICMP直接访问。
- Socket 处于应用空间 于内核 之间
2、IP地址
- IP地址是Internet 中主机的标识
— Internet 中的主机要与别的机器通信 必须具有一个IP地址;
— IP地址 为32位(IPV4)和 128位(IPV6)
— 每个数据包都必须携带目的的IP地址和源IP地址,路由器依靠此信息为数据包选择路由;
- 表示形式: 常用点分形式,如202.38.64.10 最后都会转换为一个32 位的 无符号整数;
- IP地址分类
— mobileIPV6:local IP (本地注册的IP) roam IP (漫游IP)
— IPV4 :采用32位的整数来表示; IPV6:采用128位的整数来表示;
- 子网掩码
- 特殊IP地址
— 局域网IP :192.xxx.xxx.xxx 10.xxx.xxx.xxx
— 广播IP : xxx.xxx.xxx .255 255.255.255.255 (全网广播)
— 组网IP : 224.xxx.xxx.xxx~239.xxx.xxx.xxx
- IP地址的转换
—
—
—
—
—
3、端口号
- 为了区分一台主机 接收到的数据包应该交给哪个进程来进行处理,使用端口号来区别;(进程也可以称之为任务)
- TCP端口号与UDP端口号独立;
- 端口号一般由IANA(Internet Assigned Numbers Authority)管理
— 众所周知端口:1~1023(TFP:21 SSH:22 HTTP : 80 HTTPS : 469) (1~255之间为众所周知号,256~1023端口通常由UNIX系统占用)
— 注册端口: 1024~49150;
— 动态或私有端口 :59151~65535
注: 保留端口:1024~5000(不建议使用) 可以使用的端口:5000~65535
- 网络里面的通信是由 IP地址 + 端口号 来决定的;
4、字节序
- 不同类型的CPU的主机中,内存储存多字节 整数序列 有两种方法,称为主机字节序(HBO)
— 小端序列(little_endian): — 低序字节存储在低地址;
(1) 将低字节存储在起始地址,称为“little_endian”字节序,Intel 、AMD等。
— 大端序列(big_endian): — 高序字节存储在低地址;
(1) 将高字节存储在起始地址,称为“big_endian”字节序,由ARM、Motorola等所采用。
- 网络中传输的数据必须按网络字节序,即大端字节序;
- 在大部分PC机上,当应用进程需要将整数送入socket前,需要转换成网络字节序;当应用进程从socket取出整数后,要转换成小端字节序;
- PC机 、ARM 采用小端字节序; powerpc/mips 、arm用作路由器时 采用大端字节序;
- 字节序转换函数
—
—
—