linux学习笔记(27)网络编程——网络分层

网络分层

网络为什么要分层?

 降低复杂度

  • 如果不分层,你要一次性处理:
    • 物理线路上的信号传输(网线 / 无线)
    • 找到目标主机(IP 寻址)
    • 保证数据可靠到达(重传、排序)
    • 应用数据的格式和解析(HTTP、FTP 等)
  • 这些功能混杂在一起,代码会非常复杂,出了问题也很难定位。
  • 分层后:每层只关心自己的任务,比如传输层只管 “端到端可靠传输”,网络层只管 “找路”,应用层只管 “数据内容”。

每层可以独立更新和替换 灵活性好

  • 分层后,只要保证层与层之间的接口不变,内部实现可以随便改。
  • 比如:
    • 物理层从 “网线” 换成 “光纤”,网络层和应用层完全不用改。
    • TCP 协议优化了拥塞控制算法,HTTP 应用层完全感知不到。
  • 这样升级、优化、替换都很方便,不会牵一发而动全身。

便于标准化和跨平台 工作标准化

  • 分层让不同公司、不同系统可以遵循统一的接口标准(协议)。
  • 例如:
    • 你的电脑(Windows)和服务器(Linux),虽然操作系统不同,但都遵守 TCP/IP 协议,所以能互相通信。
  • 如果不分层,每个厂商可能搞出完全不同的通信方式,互联网就成了 “孤岛”。

便于调试和定位问题 方便维护

  • 分层后,排查网络问题可以逐层进行:
  1. 物理层:网线松了?网卡坏了?
  2. 网络层:IP 配置错了?路由不通?
  3. 传输层:端口没开放?连接被防火墙拦截?
  4. 应用层:HTTP 请求格式错了?
(osi偏假想,但是还是有些复杂    tcp/ip依旧是标准)
层级
名称
主要功能
常见协议
4
应用层
直接为应用程序提供服务
HTTP、HTTPS、FTP、SMTP、DNS
3
传输层
提供端到端的数据传输(进程到进程)
TCP、UDP
2
网络层
负责不同网络之间的路径选择和数据转发(主机到主机)
IP、ICMP、ARP
1
网络接口层
负责物理介质上的数据传输(比特流)
Ethernet、Wi-Fi、PPP

常见协议简介

应用层协议

  • HTTP(超文本传输协议):用于网页传输,端口 80。
  • HTTPS(安全的 HTTP):HTTP + SSL/TLS 加密,端口 443。
  • FTP(文件传输协议):用于文件上传下载,端口 21(控制)、20(数据)。
  • SMTP(简单邮件传输协议):发送电子邮件,端口 25。
  • DNS(域名系统):将域名解析成 IP 地址,端口 53(UDP/TCP)。

传输层协议

  • TCP(传输控制协议):面向连接、可靠、有序、面向字节流。 流式服务
    • 特点:三次握手建立连接,四次挥手断开连接,有应答确认、超时重传、乱序重排,去重,拥塞控制(滑动窗口)机制
    • 用途:HTTP、HTTPS、FTP、SMTP 等要求可靠传输的场景。
  • UDP(用户数据报协议):无连接、不可靠、速度快。 数据报服务
    • 特点:发送即不管,不保证到达顺序和完整性。
    • 用途:DNS、视频 / 语音通话、直播等实时性要求高的场景。

网络层协议

  • IP(网际协议):定义数据包格式,负责路由选择。
    • IPv4:32 位地址,格式如 192.168.1.1
    • IPv6:128 位地址,解决地址耗尽问题。
  • ICMP(互联网控制消息协议):用于网络诊断,如 ping 命令。
  • ARP(地址解析协议):将 IP 地址转换为 MAC 地址。

网络应用程序通信流程

如下图,应用程序 A 要将数据”hello” 传给网络上另外一台主机上的应用程序 B, 数据“hello”从应用层发送给传输层后,传输层在数据前面加上 tcp 协议或 udp 协议的报头,将整条报文发给网络
层,网络层添加自己的 IP 报头,再将整条数据发送给数据链路层。数据链路层将数据封装成能在网络中独立传输的数据单元,即数据帧。封装好的数据帧通过网络传输到另一台主机,然后再从下
层依次拆包,将数据部分送往应用层。应用程序 B 就得到了数据”hello“
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值