应用层 application
好嘛,平常最常用的应用层在这门课里可谓绝对配角,也就是这课讲层级是从上往下讲的才第一个碰到它,不然怕是丝毫存在感也无
这一篇的内容主要以了解为主
正式开始前先再在DNA里刻一遍这图
关于它本身的简短描述
这图不能不放,老师尽力了
- 你在其他课程会学到它(行吧
- 这是你作为秃头程序员(主要)使用的层
- 在应用层,网络这个概念被抽象,你可以访问到达套接字(socket) 的数据流(之后展开)
- 这层的内容相当于全是data,应用程序写入和记录的数据格式由你自己定义
- 不同的应用会使用不同格式的数据:
- HTTP(Hyptertext超文本传输协议)—— world-wide web,但凡上网都得熟吧
- FTP(文件传输协议)移动数据——哎哟这个连服务器熟啊
- SMTP(发送邮件传输协议)发送电子邮件
- 接收电子邮件的IMAP(互联网消息访问协议)——你设置电子邮件的时候其实都有这个选项
此外,应用层协议其实定义了:
- 交换的信息类型
- 例如是请求还是响应
- 进程何时以及如何发送和响应消息
- 消息语法 message syntax
- 消息中的哪些字段以及字段的划分方式
- 消息语义 message semantics
- 字段中信息的含义
应用层的协议有开放协议(open protocols,如HTTP, SMTP)和专有协议(proprietary protocols, 如Skype自己定义了格式)的区别
讲讲套接字(sockets)
套接字其实是被抽象出来充当接口的一个概念:
- 进程向其套接字发送/从其套接字接收消息
- 像门、像API
- 发送过程将信息推到门外,依赖于门另一侧的传输基础设施
- 在接收过程中将消息传递到套接字
- 像门、像API
总而言之,处理应用层的时候不用直接管后面的事,二是通过抽象出的套接字进行通信——也只有这个过程是由开发者自己完成的
稍微展开一点
我其实觉得不比喻还更清楚一点:要接受信息,你得有个身份,这个身份由我们后面会提到的IP地址和端口号决定
套接字(socket)为通信的端点,每个套接字由一个 IP 地址和一个端口号组成。通过网络通信的每对进程需要使用一对套接字,即每个进程各有一个。
说到这了就补充一点地址
问,能从IP地址判断运行的是什么进程吗?
答,否,大家都走IP,要看端口
TCP/IP常见四中地址类型
- Layer2(link)中的物理地址MAC
- 也称为链路地址,是由其LAN或WAN定义的节点地址
- Layer3(network)中的逻辑地址
- 就是常说的IP地址
- 逻辑(IP)地址是用于独立于底层物理网络的通用通信
- Layer4(transport)中的端口地址
- 用来区分不同的进程
- Layer7(application)特定于应用程序的地址
- 有有些应用程序具有为特定应用程序设计的用户友好的地址,例如电子邮件地址、URL
会话层+表示层(Session and Presentation Layer)
很惨,这俩就是理论层面罢了
- 会话层(第5层):
- 在连接的生命周期内负责两台主机之间的连接
- 认证+授权(谁是用户,他们能做什么)
- 现行互联网中通过应用层实现
- 表示层(第6层):
- 为应用程序转换数据
- 例如,处理用于编码字符串的字符集的细节
- 实际也在应用层
- 为应用程序转换数据