网络协议4:(简略的)应用层、表示层、会话层以及常用的四种地址

1,925 阅读3分钟

应用层 application

好嘛,平常最常用的应用层在这门课里可谓绝对配角,也就是这课讲层级是从上往下讲的才第一个碰到它,不然怕是丝毫存在感也无

这一篇的内容主要以了解为主

正式开始前先再在DNA里刻一遍这图

层级图.png

关于它本身的简短描述

这图不能不放,老师尽力了

示意图

  • 你在其他课程会学到它(行吧
  • 这是你作为秃头程序员(主要)使用的层
  • 在应用层,网络这个概念被抽象,你可以访问到达套接字(socket) 的数据流(之后展开)
  • 这层的内容相当于全是data,应用程序写入和记录的数据格式由你自己定义
  • 不同的应用会使用不同格式的数据
    • HTTP(Hyptertext超文本传输协议)—— world-wide web,但凡上网都得熟吧
    • FTP(文件传输协议)移动数据——哎哟这个连服务器熟啊
    • SMTP(发送邮件传输协议)发送电子邮件
    • 接收电子邮件的IMAP(互联网消息访问协议)——你设置电子邮件的时候其实都有这个选项

此外,应用层协议其实定义了:

  • 交换的信息类型
    • 例如是请求还是响应
  • 进程何时以及如何发送和响应消息
  • 消息语法 message syntax
    • 消息中的哪些字段以及字段的划分方式
  • 消息语义 message semantics
    • 字段中信息的含义

应用层的协议有开放协议(open protocols,如HTTP, SMTP)和专有协议(proprietary protocols, 如Skype自己定义了格式)的区别

讲讲套接字(sockets)

套接字其实是被抽象出来充当接口的一个概念:

  • 进程向其套接字发送/从其套接字接收消息
    • 像门、像API
      • 发送过程将信息推到门外,依赖于门另一侧的传输基础设施
      • 在接收过程中将消息传递到套接字

总而言之,处理应用层的时候不用直接管后面的事,二是通过抽象出的套接字进行通信——也只有这个过程是由开发者自己完成的

socket.png

稍微展开一点

我其实觉得不比喻还更清楚一点:要接受信息,你得有个身份,这个身份由我们后面会提到的IP地址和端口号决定

套接字(socket)为通信的端点,每个套接字由一个 IP 地址和一个端口号组成。通过网络通信的每对进程需要使用一对套接字,即每个进程各有一个。

说到这了就补充一点地址

,能从IP地址判断运行的是什么进程吗?
,否,大家都走IP,要看端口

TCP/IP常见四中地址类型

  • Layer2(link)中的物理地址MAC
    • 也称为链路地址,是由其LAN或WAN定义的节点地址
  • Layer3(network)中的逻辑地址
    • 就是常说的IP地址
    • 逻辑(IP)地址是用于独立于底层物理网络的通用通信
  • Layer4(transport)中的端口地址
    • 用来区分不同的进程
  • Layer7(application)特定于应用程序的地址
    • 有有些应用程序具有为特定应用程序设计的用户友好的地址,例如电子邮件地址、URL

image.png

image.png

会话层+表示层(Session and Presentation Layer)

很惨,这俩就是理论层面罢了

  • 会话层(第5层):
    • 在连接的生命周期内负责两台主机之间的连接
    • 认证+授权(谁是用户,他们能做什么)
      • 现行互联网中通过应用层实现
  • 表示层(第6层):
    • 为应用程序转换数据
      • 例如,处理用于编码字符串的字符集的细节
      • 实际也在应用层

小题目

image.png