目录
OSI 七层模型
OSI七层模型是一个协议栈,是为了统一计算机网络标准,方便数据的交换。它自上而下依次为:
- 应用层:直接向用户提供服务,完成用户希望在网络上完成的各种工作。应用层是体系结构中的最高层,负责应用程序间的沟通,是用户与应用程序之间的一个接口,操作程序,进而触发更下层的服务。网络编程套接字就在这层。协议:HTTP、HTTPS等
- 表示层:对从应用层获取到的数据报文数据进行格式处理、安全处理和压缩处理。
- 会话层:对当前主机进程和目标主机进程会话的建立、管理和终止行为。
- 传输层:负责两台主机之间的数据传输,保证数据可靠的从源主机发送到目标主机,以及过程中的差错处理,流量控制拥塞控制等。 协议:UDP、TCP
- 网络层:负责地址管理和路由选择。 协议: ICMP、IGMP、IP(IPv4、IPv6)
- 数据链路层:负责设备之间的数据帧的传送和识别。建立相邻节点的逻辑连接,进行逻辑地址寻址、差错校验等。 协议:ARP等
- 物理层:负责光电信号的传递方式,物理层的能力决定了最大传输速率传输距离。
- 局域网的两台主机是可以直接通信的。
- 网络通信中,在应用层我们认为两台主机是在直接通信,其实是必须贯穿整个协议栈。发送方必须自顶向下的通过应用层传输层网络层链路层一层一层的封装添加自己层的报头,再通过接收方自底向上的一层一层解包去掉该层报头,最后交付给应用层用户。
- 报头和有效载荷,报头也是数据,在C语言看来就是一个位图,用来指导当前层进行某种协议决策,就相当于快递上的快递单,告诉快递应该如何派发。
- 每层协议的报头中都包含两个共性的字段,1、当前报文的有效载荷要交付上层的什么协议。2、明确报头和有效载荷的边界。
- IP的意义之一就是屏蔽底层网络的差异。
- 以太网基于碰撞检测。令牌环。
- IP+端口号=socket套接字,能够标识互联网中的唯一的一个进程。
- 互联网世界是一个进程间通信的世界。
- 一个进程可关联多个端口号,但一个端口号不能关联多个进程。
- UDP:socket、bind、recvfrom、sendto。客户端不用显示bind某个端口号,socket->sendto->recvfrom。服务端需要明确端口号,但是主机IP地址设置成any,socket->bind->recvfrom->sendto。
- TCP&