IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【计算机网络-哈工大】---学习笔记(上)---网络体系结构,TCP/IP参考模型,应用层,HTTPDNSSMTPSocket -> 正文阅读

[网络协议]【计算机网络-哈工大】---学习笔记(上)---网络体系结构,TCP/IP参考模型,应用层,HTTPDNSSMTPSocket

计算机网络之网尽其用

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 接入网络

在这里插入图片描述

  • 1、接入网络:数字用户线路(DSL)(电话线)

在这里插入图片描述

  • 2、接入网络:电缆网络(有线电视)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3、机构(企业)接入网络(Ethernet)

]

  • 4、无线接入网络(WIFI和4G)
    在这里插入图片描述

1.3.3 网络核心

在这里插入图片描述

  • 网络核心解决的基本问题就是数据交换

1.4 Internet结构:网络之网络

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

  • 总结目前网络状况-Internet网络
    在这里插入图片描述

1.5 数据交换

  • 网络核心解决的重要问题:数据交换

在这里插入图片描述

  • 数据交换的类型
    • 电路交换
    • 报文交换
    • 分组交换

1.5.1 电路交换

  • 1、电路交换的特点

在这里插入图片描述

  • 2、电路交换网络的链路共享?

在这里插入图片描述

  • 3、多路复用技术

在这里插入图片描述

在这里插入图片描述

  • 4、多路复用技术—频分多路复用FDM

在这里插入图片描述
在这里插入图片描述

  • 5、多路复用技术—时分多路复用TDM

在这里插入图片描述
在这里插入图片描述

  • 6、多路复用技术—波分多路复用WDM

在这里插入图片描述
在这里插入图片描述

  • 7、多路复用技术—码分多路复用CDM

在这里插入图片描述

  • 不同用户之间相乘(正交)只会得到0;

在这里插入图片描述

  • 一个用户发送时:
    在这里插入图片描述
  • 多个用户发送时

1.5.2 报文、分组交换

  • 报文是一个整体进行传输;

在这里插入图片描述

  • 分组是拆分报文成小数据包(会加上一些信息)

在这里插入图片描述

  • 1、分组交换:统计多路复用

在这里插入图片描述

  • 并不是事先分配好的,随机分配,按需共享链路
  • 2、存储-转发
    在这里插入图片描述
  • 为了比较以上报文交换和分组交换的优缺点,首先引入计算分组交换的传输延迟;
  • 3、分组交换:传输延迟
    在这里插入图片描述

  • 4、报文交换 vs 分组交换

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

  • 分组交换中间路由器缓存也少很多,目前主要以分组交换的方式为主;
  • 5、分组交换的报文交付时间

  • 6、分组交换(统计) vs 电路交换(复用)

在这里插入图片描述

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

在这里插入图片描述

1.6 计算机网络性能

1.6.1 速率(b/s)

在这里插入图片描述

1.6.2 带宽(b/s)

在这里插入图片描述

1.6.3 延迟/时延(delay/latency)

在这里插入图片描述

  • 四种分组延迟

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

  • 排队延迟(具有随机性)

在这里插入图片描述

1.6.4 时延带宽积

  • 带宽(bps)最高传输速率

在这里插入图片描述

1.6.5 丢包率

  • 分组丢失(丢包)

在这里插入图片描述

1.6.6 吞吐量/率(Throughput)

在这里插入图片描述
在这里插入图片描述

2 计算机网络体系结构

2.1 计算机网络体系

在这里插入图片描述

  • 1、网络体系结构是从功能上描述计算机网络结构

在这里插入图片描述

  • 2、分层结构
    在这里插入图片描述
  • 分层过多会导致效率降低;
  • 3、分层网络体系结构基本概念

在这里插入图片描述

2.2 OSI参考模型

2.2.1 OSI标准

在这里插入图片描述

  • 1、OSI参考模型解释的通信过程

在这里插入图片描述

  • 实线连接的部分是真正传输物理的部分通路;
  • 虚线是对等层之间的逻辑数据传输;
  • 2、OSI参考模型数据封装与通信过程

在这里插入图片描述

  • 3、为什么要数据封装?

在这里插入图片描述

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 网络应用的三种体系结构

在这里插入图片描述

  • 1、客户机/服务器结构

在这里插入图片描述
在这里插入图片描述

  • 2、纯P2P结构

在这里插入图片描述

  • 3、混合结构

在这里插入图片描述

3.1.2 网路应用进程通信

  • 1、网路应用的基础:进程间通信

在这里插入图片描述

  • 2、套接字:Socket

在这里插入图片描述

  • 3、如何寻址进程::IP地址+端口号

在这里插入图片描述

  • 4、应用层协议

在这里插入图片描述

  • 5、应用层协议的内容

在这里插入图片描述

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

  • 1、网络应用的需求指标

在这里插入图片描述

  • 2、Internet提供的传输服务

在这里插入图片描述

  • 3、典型网络应用所使用的传输层服务

在这里插入图片描述

3.2 WEB应用(HTTP,Cookie)

3.2.1 WEB应用概述

  • World Wide Web
  • 1、Web与HTTP

在这里插入图片描述

  • Web所遵循的协议就是HTTP协议;
  • 超文本传输协议,HyperText Transfer Protocol
  • 2、HTTP协议概述

在这里插入图片描述

  • 使用传输层的TCP协议
    在这里插入图片描述
  • 无状态不维护过去的状态,不记录历史信息;

3.2.2 HTTP协议连接类型

在这里插入图片描述

  • 1、非持久性连接(每次只允许传输一个对象)

在这里插入图片描述
在这里插入图片描述

  • 2、响应时间分析与建模

在这里插入图片描述

  • 3、持久性HTTP
    在这里插入图片描述

3.2.3 HTTP请求消息格式

  • 1、HTTP请求消息

在这里插入图片描述

  • 请求行+请求头+请求空行+请求主体
  • 2、HTTP请求消息的通用格式
    在这里插入图片描述

  • 3、上传输入的方法

在这里插入图片描述

  • 4、方法的类型
    在这里插入图片描述

3.2.4 HTTP响应消息格式

  • 1、HTTP响应格式

在这里插入图片描述

  • 状态行+头部行+空行+响应消息主体
  • 2、HTTP响应状态代码

在这里插入图片描述

3.2.5 Cookie技术(HTTP拓展技术)

  • HTTP协议无状态,但是很多服务需要记录(如购物);cookie用来记录状态;

在这里插入图片描述

  • 1、Cookie的原理

在这里插入图片描述

  • 2、Cookie的作用

在这里插入图片描述

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

  • 1、Web缓存/代理服务器技术

在这里插入图片描述

  • 2、Web缓存示例

在这里插入图片描述

  • 扩大链路带宽,成本高;

在这里插入图片描述

  • 使用代理服务器

在这里插入图片描述

  • 代理服务器的更新问题;
  • 3、条件性GET方法

在这里插入图片描述

3.3 Email应用(SMTP)

3.3.1 Email应用的构成

在这里插入图片描述

在这里插入图片描述

  • 自己的客户端不会24小时一直开着,进行接收;

3.3.2 SMTP协议:RFC 2821

  • SMTP:命令和响应的模式;
  • HTTP:请求和响应的模式;

在这里插入图片描述

  • Email应用示例(异步应用)

在这里插入图片描述

  • SMTP交互示例

在这里插入图片描述

  • SMTP协议

在这里插入图片描述

3.3.3 Email消息格式

  • 1、Email基本格式

在这里插入图片描述

  • 2、Email消息格式:多媒体扩展

在这里插入图片描述

  • 3、邮件访问协议(POP和IMAP)
  • 发送邮件、邮件服务器之间的通信都是SMTP,但是从服务器获取邮件是使用邮件访问协议;

在这里插入图片描述

  • 4、POP协议

在这里插入图片描述

  • POP3协议有多种模式,

在这里插入图片描述

  • 4、IMAP协议

在这里插入图片描述

3.4 DNS(Domin Name System)

  • 解决主机/路由器的识别问题;
  • 域名与IP地址的映射;

3.4.1 DNS概述(域名解析系统)

在这里插入图片描述

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

在这里插入图片描述

  • 1、分布式层次式数据库

在这里插入图片描述

  • 缺点是需要进行三次查询;
  • 2、DNS根域名服务器

在这里插入图片描述

  • 3、TLD和权威域名解析服务器

在这里插入图片描述

  • 4、本地域名解析服务器
  • 不属于层级体系

在这里插入图片描述

  • 5、DNS查询示例
    • 迭代查询

在这里插入图片描述

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

在这里插入图片描述

  • 6、DNS记录缓存和更新

在这里插入图片描述

3.4.2 DNS记录和消息格式

  • 1、DNS记录

在这里插入图片描述

  • 2、DNS协议与消息
  • DNS是查询和服务的模式,消息格式相同

在这里插入图片描述

在这里插入图片描述

  • 3、如何注册域名?

在这里插入图片描述

3.5 P2P应用

  • 以上学习的WEB应用和DNS应用都是C/S客户端/服务器模式;
  • 下面学习P2P模式;

3.5.1 P2P应用_原理与文件分发

  • 1、纯P2P架构

在这里插入图片描述

  • 缺点是比较复杂;
  • 2、文件分发:客户机/服务器 vs P2P
    • 文件分发:客户机/服务器

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 可以看到,当节点数N不断增大,P2P的耗时趋于平稳,而服务器/客户端模式就线性增长;
  • 3、文件分发:BitTorrent
  • 典型协议Bit,P2P;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.5.2 P2P应用_索引技术

  • 1、P2P:搜索信息

在这里插入图片描述

  • 2、集中式索引

在这里插入图片描述

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

在这里插入图片描述

  • 3、洪范式查询:Query flooding

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

  • 5、P2P案例应用:Skype

在这里插入图片描述

3.6 Socket编程-应用编程接口

3.6.1 典型的应用编程接口

  • 1、网络程序设计接口

在这里插入图片描述

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

在这里插入图片描述

  • 3、几种典型的应用编程接口
  • 应用最广泛的就是套接字(socket)

在这里插入图片描述

3.6.2 Socket API概述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 2、地址结构

在这里插入图片描述

3.6.3 Socket API函数(WinSock)1

  • 一般以WSA开头的API扩展函数

在这里插入图片描述

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

在这里插入图片描述

  • 两个参数:一个是WinSock版本,一个是数据结构的指针;
  • 2、WSACleanup

在这里插入图片描述

  • 3、socket

在这里插入图片描述

  • 第一个参数,是说明确定是哪个传输层协议簇;
  • 第二个参数,创建哪种套接字;第三个参数
  • 4、Socket面向TCP/IP的服务类型

在这里插入图片描述

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

在这里插入图片描述

  • 6、bind(绑定本地地址端口号)

在这里插入图片描述

  • 服务端bind,客户端不需要,会自动调用分配;

在这里插入图片描述

  • bind返回地址通配符,而不指定特定IP地址;

3.6.4 Socket API函数(WinSock)2

  • 1、listen(服务端置监听模式,等待连接)

在这里插入图片描述

  • 多个客户端发起套接字请求,就有等待队列;
  • 2、connect(客户端专用)

在这里插入图片描述

  • 3、accept(服务器专用,返回一个新套接字)

在这里插入图片描述

  • 4、send,sendto(发送数据)

在这里插入图片描述

  • 5、recv、recvfrom(接收数据)

在这里插入图片描述

  • 6、setsockopt,getsockopt(设置套接字参数,读取套接字参数)
    在这里插入图片描述

  • 7、Scoket API函数小结

在这里插入图片描述
在这里插入图片描述

  • 8、关于网络字节顺序

在这里插入图片描述

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

  • 1、Socket API(TCP)调用基本流程

在这里插入图片描述

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

  • 1、解析服务器IP地址

在这里插入图片描述

  • 2、解析服务器(熟知)端口号

在这里插入图片描述

  • 3、解析协议号

在这里插入图片描述

  • 4、TCP客户端软件流程

在这里插入图片描述

  • 绿色是包含函数中自动完成的,不需要我们设置;
  • 5、UDP客户端软件流程

在这里插入图片描述

  • 6、客户端软件的实现-connectsock()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 7、客户端软件的实现-UDP客户端

在这里插入图片描述

  • 8、客户端软件的实现-TCP客户端

在这里插入图片描述

  • 9、客户端软件的实现-异常处理

在这里插入图片描述

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

  • 1、四种类型基本服务器

在这里插入图片描述

  • 2、循环无连接服务器基本流程
  • 循环:一次只处理一个客户端,结束之后再处理下一个,无连接:UDP

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 4、并发无连接服务器基本流程
  • 创建新线程;

在这里插入图片描述

  • 5、并发面向连接服务器基本流程

在这里插入图片描述

  • 6、服务器的实现

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:57:20  更:2022-07-17 17:00:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:23:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码