计算机网络之网尽其用
1 计算机网络概述
1.1 什么是计算机网络


-
通过交换网络互连主机  -
什么是Internet?----组成细节角度

- 什么是Internet?—服务角度

1.2 网络协议
- 协议是计算机网络有序运行的重要保证
- 硬件(主机、路由器、通信链路等)是计算机网络的基础;
- 计算机网络中的数据交换必须遵守事先约定好的规则;
-
网络协议(network protocol)定义
- 网络协议是以进行网络中的数据交换而建立的规则、标准或约定;
- 协议规定了通信实体之间所交换的消息的格式、意义、顺序以及针对收到消息或发生的事件所采取的“动作”(actions);
-
协议三要素  -
协议是计算机网络的重要内容 -
Internet协议标准
- RFC(Request for Comments),
- IEIF:互联网工程任务组(Internet Engineering Task Force);
1.3 计算机网络结构

1.3.1 网络边缘

1.3.2 接入网络


  
![]](https://img-blog.csdnimg.cn/b530c3d844f44713a2c9c4dbb1f5cae4.png)
- 4、无线接入网络(WIFI和4G)

1.3.3 网络核心

1.4 Internet结构:网络之网络



 
- 总结目前网络状况-Internet网络

1.5 数据交换

1.5.1 电路交换




 
 
 


- 一个用户发送时:
 - 多个用户发送时

1.5.2 报文、分组交换



- 2、存储-转发

- 为了比较以上报文交换和分组交换的优缺点,首先引入计算分组交换的传输延迟;
-
3、分组交换:传输延迟  -
4、报文交换 vs 分组交换


- 报文交换的方式,需要中间路由器缓存至少7.5Mbits

- 分组交换中间路由器缓存也少很多,目前主要以分组交换的方式为主;


- 电路交换需要提前建立连接,占用不释放是不可以被其他用户使用的;
- 分组交换,不预先分配,按需分配;

1.6 计算机网络性能
1.6.1 速率(b/s)

1.6.2 带宽(b/s)

1.6.3 延迟/时延(delay/latency)

 
- 传输延迟:发出去的时延;(整个车队通过收费站时间)
- 传播延迟:在路上传输的时延;


1.6.4 时延带宽积

1.6.5 丢包率

1.6.6 吞吐量/率(Throughput)
 
2 计算机网络体系结构
2.1 计算机网络体系


- 2、分层结构


2.2 OSI参考模型
2.2.1 OSI标准


- 实线连接的部分是真正传输物理的部分通路;
- 虚线是对等层之间的逻辑数据传输;


2.2.2 物理层功能-1bit传输

2.2.3 数据链路层功能

- 地址信息在数据链路层;
- 两个结点为什么需要地址寻址,如下图所示:

2.2.4 网络层功能
 
2.2.5 传输层功能
 
2.2.6 会话层功能

2.2.7 表示层功能

2.2.8 应用层功能

2.3 TCP/IP参考模型
 
2.4 5层参考模型

2.4.1 5层模型的数据封装

- 此处可以很好地反映交换机和路由器的区别;
- 报文->段(拆分报文,加上段头)->数据报(网络层)-> 帧(链路层)->bit(物理层);
- 网络层功能:路由,逻辑寻址,分组转发
2.5 计算机网络与Internet发展历史





3 应用层

3.1 网络应用概述
3.1.1 网络应用的三种体系结构

 


3.1.2 网路应用进程通信





3.1.3 网络应用需求与传输层服务



3.2 WEB应用(HTTP,Cookie)
3.2.1 WEB应用概述

- Web所遵循的协议就是HTTP协议;
- 超文本传输协议,HyperText Transfer Protocol

- 使用传输层的TCP协议

3.2.2 HTTP协议连接类型

 

- 3、持久性HTTP

3.2.3 HTTP请求消息格式

-
2、HTTP请求消息的通用格式  -
3、上传输入的方法

- 4、方法的类型

3.2.4 HTTP响应消息格式


3.2.5 Cookie技术(HTTP拓展技术)
- HTTP协议无状态,但是很多服务需要记录(如购物);cookie用来记录状态;



3.2.6 Web缓存/代理服务器技术





3.3 Email应用(SMTP)
3.3.1 Email应用的构成


3.3.2 SMTP协议:RFC 2821
- SMTP:命令和响应的模式;
- HTTP:请求和响应的模式;




3.3.3 Email消息格式


- 发送邮件、邮件服务器之间的通信都是SMTP,但是从服务器获取邮件是使用邮件访问协议;




3.4 DNS(Domin Name System)
- 解决主机/路由器的识别问题;
- 域名与IP地址的映射;
3.4.1 DNS概述(域名解析系统)

- 为很多主机/路由不间断完成翻译任务;变得挑战性;
- 本身是DNS应用层协议;
- 提供核心功能,但在应用层实现;






- 先问本地Local,再问根域名服务器,root返回一个顶级地址,再问TLD域名服务器,再返回一个权威地址,再问权威域名服务器;获得IP地址;


3.4.2 DNS记录和消息格式




3.5 P2P应用
- 以上学习的WEB应用和DNS应用都是C/S客户端/服务器模式;
- 下面学习P2P模式;
3.5.1 P2P应用_原理与文件分发


- 时间跟随N线性增长;只能由服务器将副本分别发给N个节点,

- 对于P2P,当服务器上传第一个副本给一个节点的时候,就可以开始了一个节点向其他节点开始传送;

- 可以看到,当节点数N不断增大,P2P的耗时趋于平稳,而服务器/客户端模式就线性增长;



3.5.2 P2P应用_索引技术


- 虽然文件分发是P2P的,但是查询文件位置,是需要问中央服务器;
- 因此,存在以下问题:

 
- 向它连接的所有节点发送查询消息,然后再节点转发查询消息,找到位置后,反向索引;
- 缺点:消息会像洪水一样泛滥在网络中,加重网络负担;
- 综合以上两种方式,产生以下层次式覆盖网络


3.6 Socket编程-应用编程接口
3.6.1 典型的应用编程接口

- 应用进程控制与操作系统控制的传输层,之间的数据交互,就是通过接口API;


3.6.2 Socket API概述
- socket套接字为服务器应用进程与客户端应用进程之间创建了一种抽象通信机制;

- 每一个服务器/客户端可能有多个进程,产生多个套接字;
- 当客户端的应用进程连接,怎么确定连接哪个套接字?
- IP地址+端口号(唯一确定对外)
- (对内是套接字描述符)

- 将Scoket看做一个特殊的文件;会有一个数据结构;
- 每一个进程的套接字都会维护这个数据结构;


3.6.3 Socket API函数(WinSock)1

- 首先调用
WSAStartup 初始化,最后要调用WSACleanup 释放动态链接库;

- 两个参数:一个是WinSock版本,一个是数据结构的指针;


- 第一个参数,是说明确定是哪个传输层协议簇;
- 第二个参数,创建哪种套接字;第三个参数

- 套接字架起了传输层与应用层之间的数据交换;
- 还有跟网络层交互;称为SOCK_RAW原始套接字,一般需要特殊权限(root)



3.6.4 Socket API函数(WinSock)2





 

3.6.5 网络应用的Socket API(TCP)调用

3.6.6 Socket编程-客户端软件设计





  



3.6.7 Socket编程-服务器软件设计

- 循环:一次只处理一个客户端,结束之后再处理下一个,无连接:UDP

- 数据发送

- 参数分别是,
- socket:服务器(UDP)套接字;
- data:一个指针,指向存储待发送数据缓存的地址;
- length:缓存中数据字节数;
- flags:调试或控制选项;
- destaddr:指向结构sockaddr_in的指针(客户端端点地址);
- addrlen:地址结构长度;

- 参数分别是:
- socket:(UDP)服务器套接字;
- buf:一个指针,指向存放数据报的缓存地址;
- length:缓存可用空间;
- flags:调试或控制选项;
- from:存放源地址的缓存地址,就是客户端点地址;
- fromlen:源地址长度










|