进程间的通信方式:
内核提供三种
<1>无名管道
<2>有名管道
<3>信号
System V 提供三种
消息队列
共享内存
信号灯集
跨主机通信方式
<1> 基于CS模型:要求客户端有一个客户端软件,客户端将数据传输给服务器,由服务器将数据转发给给其他客户端
<2>基于BS模型:浏览器服务器模型,不需要有客户端软件,由网页上相关服务器组件与服务器直接进行交互。
TCP/IP两个协议
TPC协议:用来检测网络传输中差错的传输协议
IP 协议:用来负责对不同网络进行互联的互联网协议
OSI的体系结构 | TCP/IP的体系结构 | 五层协议的体系结构 |
7应用层 | 应用层 | 5应用层 |
6表示层 | 传输层(TCP或UDP) | 4 传输层 |
5会话层 | 网际层 | 3网络层 |
4传输层 | 网络接口层 | 2数据链路层 |
3网络层 | 1物理层 | |
2数据链路层 | ||
1物理层 |
网络体系结构的概念:通常将功能相近的协议组织在一起放在一层,协议栈。所以每一层其实有多个协议。
分层的好处:1各层之间相互独立,每一层不需要知道下一层如何实现,只需要知道该层通过层间所提供的服务
2稳定,灵活性好,当任意一层发生变化时,只要层间接口关系保持不变,这层以上层或以下层不受影响
3 易于维护和实现(知道是什么功能就去指定层去查找)
4:促进标准化工作,每一层所提供的服务都有了准确的说明
5结构上不可以分割,每层都采用最合适的技术来实现
OSI的七层
面向应用 应用层 应用程序 : FTP,E-mail,Telnet
面向服务 表示层 数据格式定义 ,数据转换,加密
会话层 建立通信进程的逻辑名字与物理名字之间的联系
面向通信 传输层 差错处理/恢复。流量控制提供可靠的数据传输
网络层 数据分组,路由选择
面向子网 链路层 数据组成可发送,接收的帧
物理层 传输物理信号,接口,信号形式,速率
TPC/IP协议族(簇)的体系结构
TCP /IP 网络体系结构四层
应用层 FTP;Telnet, HTTP,DNS,SMTP
传输层 TCP UDP
网络层 IP ICMP IGMP
链路层(网络接口和物理层) 以太网,令牌环网,FDDI
LINUX下内核的五大功能
内存管理:内存的分配和回收
进程管理: 时间片轮询,上下文切换
文件管理:将一切0和1转换成人能看懂的字符
设备和管理:LINUX下一切皆文件
网络管理:网络协议栈的管理
一帧数据的说明
一帧数据:大小为64----1528字节(包含以太网的头部14字节,尾部4字节)
如果数据大于MTU,(最大传输单元,LINUX默认是1500),需要分成多次进行传输
TCP/IP四层结构中常见的协议
应用层;
HTTP 超文本传输协议
HTTPS 超文本传输安全协议 (在HTTP基础上新增传输加密和身份验证功能)
FTP(File Transfer Protocal) 文件传输协议
TFTP 简单文件传输协议
SMTP 简单邮件传输协议
传输层:
TCP 传输控制协议
UDP 用户数据报协议
网络层
IP 国际互联协议 能够在多个不同网络间实现信息传输的协议
ICMP 互联网控制协议 用于在IP主机,路由器之间传递控制消息,ping命令使用的协议
IGMP 互联网组管理 是一个组播协议,用与主机和组播路由器之间通信
链路层:
ARP 地址解析协议 通过IP地址获取对方的物理地址(mac地址)
PARR 逆向地址解析协议 通过mac地址获取IP地址
每一层使用的协议由下层决定,不能乱用
TCP 和UDP的异同点
相同:同属于传输层的协议
TCP:----->稳定 传输控制协议
优点
1》提供面向连接的,可靠的数据传输协议
- > 传输过程中,数据无误,数据无丢失,无失去顺序,数据无重复
- > 每个数据都需要数据应答包,若没有应答,会一直重复上面的包发送直到正确为止
缺点:
- >数据传输效率地低,耗费资源多
- >缺点:数据的收发不是同步的,
- 为了提高效率, TCP会将多个较小,并且发送间隔短的数据包粘成一个数据包发送。
- 粘包算法称之为 Nagle算法
- >TCP的使用场景 对传输质量要求高,以及传输达礼郎数据的通信,在需要可靠通信的场合 (如账号登录,大型文件下载)
UDP ----->快速 用户数据报协议
优点:1 传输速度快,实时性高
2 收发是同步的,不需要粘包
缺点: 3 面向无连接的,不保证数据可靠性,尽最大能力传输,
4传输过程中不保证数据的丢失,重复,失序等现象
5限制每次传输数据的大小,超出部分直接忽略删除
6》》适用场景:广播,通讯软件等
字节序:计算机中有关多字节整数的存储方式(多字节,整数,所以字符产,单字符都不合适),根据主机CPU处理数据的方式的不同,将主机分为大端存储的主机和小端存储的主机
大端存储:地址地位存储数据地位,地址高位存储数据高位
小端存储:地址高位存储数据低位,地址地位存储数据高位
字节序的概念引入主要是因为不同计算机架构选择了不同的存储方式,这种差异主要是由硬件设计的编好和历史因素决定。
字节在不同多平台数据交换尤为重要,因为不同机器之间的数据交换需要考虑到端绪的转换
,以
Host:主机 network 网络 to转换
函数
Uint32_htonl(uint32_t hostlong); 将4字节无符号整数的主机字节序转换为网络字节序
Uint32_htons(uint32_t hostlong); 将2字节无符号整数的网络字节序转换为主机字节序
Uint32_ntohl(uint32_t hostlong); 将4字节无符号整数的主机字节序转换为网络字节序
Uint32_ntohs(uint32_t hostlong); 将2字节无符号整数的网络字节序转换为主机字节序
IP地址
1---->概念:IP地址是计算机在网络中唯一的标识,由两部分组成,分别是表识网络区域的网络号,和该网络下的主机编号
2--->网络号:标识计算机所从属于的网络
主机号:标识设备在该网络下的一个编号
作用:在网络传输过程中,给网络传输载体必须加上源ip地址和目的ip地址,以便于找到对应的主机
路由器就是以此为依据进行路径的选择
- ---->ip地址的分类
IPv 4 使用4字节无符号整数表示一个ip地址,取值范围[0,2^32-1]
局域网:为了解决ip地址不够使用的情况,让多个主机使用同一个ip地址,
WAN:Wide Area Network 广域网
LAN: Local Area Network 局域网
IPv6 使用16字节无符号整数表示一个ip地址,取值范围[0,2^128 -1]
注意:ipv6不兼容ipv4
- ---->IP地址的划分
A类地址 2^7 (1.0.0.0---127.255.255.255) 2^7 主机号 2^24
B类地址 2^14 (128.0.0.0--191.255.255.255) 2^16 2^16
C类地址 2^21 (192.0.0.0---223.255.255.255) 2^21 2^8
D类地址 2^28 (224.0.0.0---239.255.255.255) 2^28 0
E类地址 2^28 (240.0.0.0--255.255.255.255) 2^28 0
确保数据的正确解释和使用