前言
网络时代的发展
网络特点:
cs结构: client -客户端 server -服务器
1.瘦客户机 ---胖服务器 客户端app简单 ,服务器复杂强大
2.服务器是被动的,客户机是主动的
服务器一般不会主动发起数据,而是等待客户端的请求,处理,然后回应
网络分层结构:
网络通信是一个很复杂的过程,如何解决复杂的问题 ?
网络采用分成的结构: 1.OSI模型 它将网络分为7层 理论很完美 复杂 没有产品
2.TCP/IP模型 分为4层 实用性强 都在用
网络基础知识
1、网络分层结构:
TCP/IP模型:
应用层 application, 就是使用网络传送数据的app
你自己写的网络程序 ---提供要发送的数据
传输层 TCP transport control 层,又称TCP层
负责数据安全送达,他有很多种机制,保证对方成功的收到
端口号: 16bit地址
想给对方发消息,要获知对方的端口号
每个网络程序都必须绑定一个 端口号
为什么我们以前没有用到它,因为每款app里都有一个自己默认的端口号
网络层 又称IP层,internet--网络
负责 网际寻址
IP地址: 32bit,网络寻址的关键
只提供端到端服务的:
一端到另一端的传输,一对一,一个IP到另一个ip
网络只负责发送数据,不负责数据安全问题(对方收没收到,收到的数据不正确)
网络接口层 net intf
管理各种类型的网卡,并把上一层发来的数据
通过合适的网卡发送出去
网卡地址: 每个网卡都会有一个自己的地址,又称物理地址
网络地址是 48bit -->6B
网络每一层如何实现自己的功能?
2、网络的各层协议:
网络接口层:
ARP----address resolution protocal 地址解析协议
用途: 已知对方的ip地址, 但是不知道对方的网卡地址
那么数据就没法在网卡之间传输,那么如何根据对方的ip获取网卡地址
ARP协议帮你搞定 ip地址--->网卡地址
RARP ---reverst ARP 翻转
根据网卡地址获取对方IP地址
网络层: IP层
IP协议 ,负责网络寻址
ICMP协议 :internet control manage protocal, 网络控制管理协议
流量统计, 计费,限流,判断某个ip 在线否 ---ping
IGMP协议: internet group manage protocal
网络 组播管理协议
传输层: TCP层
实时性 资源占用 安全性
电话: 强 大 高 一对一
短信: 弱 小 低 一对多
领域
TCP: 提供面向连接的, 字节流 安全可靠的服务 文件传输 ,文字
UDP: 提供面向无连接的, 数据包的,不安全可靠的服务 AV-audio vidio
socket接口-----套接字:
file : open close read write
网络:socket close recv send accept bind listen
socket 有三种类型:
1.流式套接字:提供面向连接的, 字节流 安全可靠的服务 TCP
2.数据包套接字:提供面向无连接的的, 字节流 安全可靠的服务 TCP
3.原始套接字:利用网络层提供的功能,自己实现一套协议。
IP地址:
ipv4 32bit,大概有42亿个IP
IP地址分为两部分,高字节----网络号 低字节---主机号,
根据网络号占的比特不同,又分为,A,B,C,D,E
解决IP不够用的问题??
1)ipv6 128bit ,用得很少
2)局域网IP:大家都使用局域网IP,同一个局域网可以共享一个公网IP
IP地址的转换:
IP地址 32bit---3283787384774,但生活中我们使用的是“192.168.3.58”
点分法表示ip地址: 分成4个8bit ,并以 . 隔开
字节序问题:
当一个多字节类型(short 、int long )的数据,存放在终端上(可能是大端设备 也可能是小端设备,他们们存放数据的方式不一样),当小端设备发送数据,拷贝给大端设备的时候,就会出现问题。
解决之法:
统一字节序,发送方在发送之前把本地字节序,转换为网络字节序,
接收方收到数据,把网络字节序转换为本地字节序
linux 提供了几个函数,帮助我们完成转换
short:
short htons(short n) :host to net short //本地字节序--->网络字节序
short ntohs(short n) :net to host short //网络字节序---->本地字节序
int/long: 在网络上,int 就是long
long htonl(long n) :host to net long
long ntohl(long n) :net to host long
总结
知识点很琐碎,但工作中会用到很多,需要慢慢消化吸收。如果有什么欠缺的,不正确的,欢迎大家留言补充。