计算机网络笔记二(应用层:体系结构、进程间通信、传输服务)

1.网络应用体系结构

1.1常见的网络应用

百度、QQ、Emile、迅雷、支付宝等等

1.2网络应用与单机应用的区别?

网络应用需要连接网络,需要硬件环境,比如光纤、服务器等,而且网络应用一部分是运行在本机上,一部分运行在服务器上,相互通信。

1.3网络应用应该采取什么样的体系结构?

1.3.1 客户机/服务器(C/S)
1>要求
服务器
第一:全天候提供服务
第二:永久性访问地址/域名
第三:利用大量服务器实现可扩展性
客户机
第一:与服务器通信,使用服务器提供的服务
第二:间歇性接入网络
第三:可使用动态IP地址
第四:不会与其他客户机直接通信

2>实例:Web
在这里插入图片描述

1.3.2 点对点结构(P2P)
1> 要求
第一:没有永远在线的服务器(大家都是平等的)
第二:任意端系统/节点之间可以直接通讯
第三:节点间歇性接入网络
第四:节点可能改变IP地址

2>优缺点
优点:高度可伸缩
缺点:难于管理

3>实例:一些文件共享等

1.3.3 混合结构
1>实例:Napster,文件传输使用P2P结构。文件的搜索使用C/S结构。

2.网络应用的基础:进程间通信

2.1进程相关的基本概念

2.1.1什么是进程?
进程:主机上运行的程序

2.1.2同一主机上运行的进程之间如何通信?
1>进程间通信机制
2>操作系统提供

2.1.3不同主机上运行的进程间如何通信?
消息交换(报文交换)

2.1.4不同网络应用体系结构下的进程
1>客户机/服务器体系
客户机进程:发起通信的进程
服务器进程:等待通信请求的进程
2>P2P
客户机进程:发起通信的进程
服务器进程:等待通信请求的进程
P2P也是有这些进程的,因为P2P也要进行报文交换,所以也有发起通信的进程和等待通信请求的进程。

2.1.5如何寻址进程?
1> 如果不同主机上的进程间通信,那么每个进程必须拥有标识符。进程的标识符由IP地址+端口号构成。
2> IP地址:IP地址可以唯一地标识网络中的一台主机
3> 端口号:主机上每一个需要通信的进程都会分配一个端口号,端口号就是用于标识本计算机应用层的各个进程在和运输层交互时的层间接口

2.2不同主机间的进程通信

2.2.1五层模型与每一层对应接口
针对网络边缘上的主机进行应用编程,以五层模型为对象进行讨论。五层模型分为应用层、传输层、网络层、数据链路层、物理层共五层,每一层都有对应的通信协议与开发接口,在此对一些开发接口进行简要介绍。
五层模型                        接口编程
应用层(Application)      Web/RPC/中间件编程
传输层(Transport)       NetBIOS编程(Windows环境)相当于OSI的会话层
网络层(Network)         LibPcap/WinPcap、Libnet、Libnids、Libicmp
数据链路层(Data Link)   硬件相关的直接网卡编程(难以掌握)
物理层(Physical)

数据链路层:一般是进行直接网卡编程,这类编程时硬件相关的,难以掌握。按照个人理解,这类属于驱动程序,厂家都帮忙做好了,所以不需要再特殊掌握。在网卡驱动之上,可以基于Packet Driver编程,这类编程接口屏蔽了网卡的实现细节,适用于所有的网卡。针对于Windows操作系统还有基于NDIS的网络编程,在此不做过多了解。

网络层:常用一些函数库如LibPcap/WinPcap、Libnet(网络分组或者数据构造的发送)、Libnids(网络入侵检测)、Libicmp(ICMP协议报文构造与处理)等等。

传输层:NetBIOS编程,目前看来已经过时了。

应用层与传输层之间:套接字socket编程,所需要学习的编程接口,这类接口也是最常用的。

应用层:Web/RPC/中间件编程,常见的就是Web开发。

2.2.2每一层协议与接口之间关系
协议是规则,接口是在这些规则下实现某些功能的技术
Eg: socket编程是一门技术,它主要是在网络通信中经常用到既然是一门技术,由于现在是面向对象的编程,一些计算机行业的大神通过抽象的理念,在现实中通过反复的理论或者实际的推导,提出了抽象的一些通信协议,基于tcp/ip协议,提出大致的构想,一些泛型的程序大牛在这个协议的基础上,将这些抽象化的理念接口化,针对协议提出的每个理念,专门的编写制定的接口与其协议一一对应,形成了现在的socket标准规范,然后将其接口封装成可以调用的接口,供开发者使用

参考:https://blog.csdn.net/weixin_39634961/article/details/80236161

在这里插入图片描述

而且这五层每一抽象层都建立在低一层提供的服务基础上,并为高一层提供服务。(所以应用程序需要传输层和网络层提供服务,由下图便可知就是TCP和IP协议也就是说凡是与应用层相关的都与TCP/IP协议脱不了干系)

2.2.3进程间通信的实现
应用层处理具体网络应用(FTP、HTTP)的所有细节,而对通信细节了解很少,而下面四层相反。而且应用层通常构成用户进程,底下四层通常作为操作系统内核的一部分提供。由于上面两种原因,所以我们在应用层和传输层之间建立了一个socket抽象层。所以,进程间的通信是利用socket发送/接收信息实现的。 socket如图: 在这里插入图片描述

2.3网络应用与传输服务

2.3.1网络应用对传输服务的需求
1> 数据丢失/可靠性
比如:网络电话能够容忍一定程度的数据丢失,文件传输则要求100%可靠
2>时间/延迟
比如:网络游戏/网络电话就要求低延迟
3>带宽
比如:网络视频,带宽满足最低要求时才可以

2.3.2Internet提供的传输服务(TCP与UDP两种)
1>TCP服务
面向连接:客户机/服务器进程间需要建立连接
可靠传输
流量控制:发送方不会出现发送速度过快,超过接收方的处理能力的情况
拥塞控制:当网络负载过重时能够限制发送方的发送速度
不提供时间/延迟保障
不提供最小带宽保障
2>UDP服务
无连接
不可靠传输
不提供可靠性保障
不提供流量控制
不提供拥塞控制
不提供延迟保障
不提供带宽保障

3.应用层协议

3.1应用层协议基本概念

3.1.1网络应用需遵循应用层协议

3.1.2应用层协议的分类
2>公开协议:由RFC定义,允许互操作(比如http协议是公开协议,遵循http协议的软件可以互操作),HTTP、SMTP协议等都是公开协议。
3>私有协议:多数P2P文件共享应用。

3.1.3应用层协议内容
1> 消息的类型:请求消息、响应消息
2> 消息的语法格式:消息中有哪些字段、每个字段如何描述
3> 字段的语义:字段中信息的含义
4> 规则:进程何时/如何发送/响应消息

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页