文档章节

(五):网络协议

berg-dm
 berg-dm
发布于 2016/06/15 20:25
字数 3149
阅读 35
收藏 2

做个笔记。。。。

**

一: 网络协议

** 为网络中的数据交换而建立的规则、标准或约定成为网络协议,也可简称为协议。其主要由以下三个要素组成,即: 1) 语法,即数据与控制信息的结构或格式。 2) 语义,即需要发出何种控制信息,完成何种动作以及做出何种反应。 3) 同步,即事件实现顺序的详细说明。

**

二: 协议的体系结构

**

2.1 OSI的七层体系结构

1.物理层: 在物理层上所传数据的单位是比特(bit)。 而本层典型设备是 集线器(Hub)

2.数据链路层:简称为链路层,负责在两个相邻的节点间的线路上无差错地传送以帧为单位的数据,(l数据链路层将网络层交下来的IP数据报组装成帧)每帧包括一定的数据和必要地控制信息,在接收点接收到数据出错时要通知发送方重发,直到这一帧无误地到达接收点。 本层典型设备是 交换机(Switch)

**3.网络层:**负责为分组交换往上的不同主机提供通信服务。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包(packet)进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报。 本层典型设备是 路由器(Router)

**4.运输层:**负责向两个主机中进程之间的通信提供通用的数据传输服务。( 完成同处于资源子网中的两个主机间的连接和数据传输 ) 所谓通用,是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。

4.1 传输控制协议 TCP(Transmission Control Protocol ) ----- 提供面向连接的,可靠的数据传输服务,其数据传输的单位是报文段。 1) TCP是面向连接的运输层协议。 2) 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点即一对一。 3) TCP提供可靠交付的服务。 4) TCP提供双工通信。 5) **面向字节流。**指的是流入到进程或从进程流出的字节序列。

TCP报文段的首部格式:

TCP报文段的首部格式

源端口号( 16 位):它(连同源主机 IP 地址)标识源主机的一个应用进程。

目的端口号( 16 位):它(连同目的主机 IP 地址)标识目的主机的一个应用进程。这两个值加上 IP 报头中的源主机 IP 地址和目的主机 IP 地址唯一确定一个 TCP 连接。

顺序号( 32 位):用来标识从 TCP 源端向 TCP 目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。如果将字节流看作在两个应用程序间的单向流动,则 TCP 用顺序号对每个字节进行计数。序号是 32bit 的无符号数,序号到达 2 32 - 1 后又从 0 开始。当建立一个新的连接时, SYN 标志变 1 ,顺序号字段包含由这个主机选择的该连接的初始顺序号 ISN ( Initial Sequence Number )。

确认号( 32 位):包含发送确认的一端所期望收到的下一个顺序号。因此,确认序号应当是上次已成功收到数据字节顺序号加 1 。只有 ACK 标志为 1 时确认序号字段才有效。 TCP 为应用层提供全双工服务,这意味数据能在两个方向上独立地进行传输。因此,连接的每一端必须保持每个方向上的传输数据顺序号。

TCP 报头长度( 4 位):给出报头中 32bit 字的数目,它实际上指明数据从哪里开始。需要这个值是因为任选字段的长度是可变的。这个字段占 4bit ,因此 TCP 最多有 60 字节的首部。然而,没有任选字段,正常的长度是 20 字节。

保留位( 6 位):保留给将来使用,目前必须置为 0 。

控制位( control flags , 6 位):在 TCP 报头中有 6 个标志比特,它们中的多个可同时被设置为 1 。依次为:

URG =>urgent 紧急位:为 1 表示紧急指针有效,为 0 则忽略紧急指针值。

ACK =>acknowledge 确认位:为 1 表示确认号有效,为 0 表示报文中不包含确认信息,忽略确认号字段。

PSH =>push:为 1 表示是带有 PUSH 标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。

RST => reset 重置位:用于复位由于主机崩溃或其他原因而出现错误的连接。它还可以用于拒绝非法的报文段和拒绝连接请求。一般情况下,如果收到一个 RST 为 1 的报文,那么一定发生了某些问题。

**SYN :**同步序号,为 1 表示连接请求,用于建立连接和使顺序号同步( synchronize )。

FIN finish 完结位:用于释放连接,为 1 表示发送方已经没有数据发送了,即关闭本方数据流。

窗口大小( 16 位):数据字节数,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口大小。窗口大小是一个 16bit 字段,因而窗口大小最大为 65535字节。

校验和( 16 位):此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。

紧急指针( 16 位):只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

选项:最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size) 。每个连接方通常都在通信的第一个报文段(为建立连接而设置 SYN 标志的那个段)中指明这个选项,它指明本端所能接收的最大长度的报文段。选项长度不一定是 32 位字的整数倍,所以要加填充位,使得报头长度成为整字数。

数据: TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

4.2 用户数据报协议 UDP(User Datagram Protocol ) ----- 提供无连接的(面向非连接),尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。 1) UDP是无连接的,即发送数据之前不需要建立连接。 2) UDP使用尽最大努力交付,即不保证可靠交付。 3) UDP是面向报文的。应用层交给UDP多长的报文,UDP就照样发送。 4) UDP没有拥塞控制。 5) UDP支持一对一,一对多,多对一和多对多的交互通信。 6) UDP的首部开销小。只有8个字节,比TCP的20个字节的首部要短。

5.会话层: 组织和同步不同的主机上各种进程间的通信,负责在两个会话层实体之间进行对话连接的建立和拆除。 还提供在数据流中插入同步点的机制,使得数据传输因网络故障而中断后,可以不必从头开始而是仅重传最近一个同步点以后的数据。

6.表示层:为上层用户提供共同的数据或信息的语法表示变换。为了让不同编码方法的计算机在通信中能相互理解数据的内容,可以采用抽象的标准方法来定义数据结构,并采用标准的编码表示形式。 表示层管理这些抽象的数据结构,并将计算机内部的表示形式转换成网络通信中采用的标准表示形式。数据压缩与加密也是表示层可提供的功能。

**7.应用层:**为操作系统或网络应用程序提供访问网络服务的接口。 通过应用进程(主机中正在运行的程序)间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。 将应用层交互的数据单元成为报文(message)。

注意:其中最低4层完成数据传送服务,上面3层面向终端用户。 每层至少制定两项标准:服务定义和协议规范(主要描述该协议的动作和各种有关规程)。

**

2.2 TCP/IP四层体系结构

**

1.网络接口层(物理层,数据链路层):负责通过网络发送和接收数据报;允话主机连入网络时使用多种现成的流行的技术。 以太网,令牌网,帧中继,ATM,X.25, DDN, SDH, WDM

2.网络层: 负责数据包从源到目的地,任务包括网络路由,差错控制和IP编址等。 协议:IP, ICMP, IPSec

3.传输层: 响应来自应用层的服务请求,并向网络层发出服务请求。 TCP, UDP.

4.应用层(会话层,表示层,应用层): 应用层是大多数普通与网络相关的程序为了通过网络与其他程序通信所使用的层。在应用层中,数据以应用内部使用的格式进行传送,然后被编码成标准协议的格式。 HTTP, FTP, POP3, IMAP(接收邮件), SMTP(发送邮件 ), SSH, Telnet.

可以发现HTTP协议属于应用层协议。它构建在TCP和IP协议之上,处于TCP/IP体系架构中的顶端。

三: 实体、协议、服务和服务访问点。

**3.1 实体:**表示任何可发送或接收信息的硬件或软件进程。

**3.2 协议:**协议是控制两个对等实体或多个实体进行通信的规则的集合。而协议在语法方面的规则定义了所交换的信息的格式;协议在语义方面的规则就定义了发送者或接收者所要完成的操作。比如在何种条件下数据必须重传会丢弃;协议在同步方面的规则定义了收发双发的时序关系,即在一定条件下应当发生什么事件。

注意: 在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。

3.3 协议和服务在概念上又是很不一样的。 首先,协议的实现保证了能够向上一层提供服务。使用本层服务的实体只能看见服务而无法看见下面的协议。也就是说,下面的协议对上面的实体是透明的。 其次,协议是“水平的”,即协议是控制对等实体之间通信的规则。但**服务是“垂直的”,**即服务是由下层向上层通过层间接口提供的。另外,并非在一个层内完成的全部功能都称为服务。只有那些能够被高一层实体“看得见”的功能才能称之为“服务”。

3.4 服务访问点(SAP: Service Access Point) 在同一系统中相邻两层的实体进行交互即交换信息的地方。 SAP实际上就是一个逻辑接口。


广域网WAN 城域网MAN 局域网LAN 个人区域网PAN

《计算机网络》

© 著作权归作者所有

berg-dm
粉丝 26
博文 98
码字总数 88970
作品 0
深圳
程序员
私信 提问
杭州高新企业诚聘Android开发工程师2名

岗位职责: 1.Android应用软件开发 2.Android平台开发 岗位要求: 1.一年以上Android平台软件开发经验 2.熟悉Android系统架构及相关技术和API的调用 3.精通Java编程,熟悉C/C++,熟练掌握面向...

nationalchip
2012/05/02
934
0
阿里云ACE认证学习知识点梳理

学习知识点梳理 第一部分:阿里云产品学习 一、阿里云相关概念深化学习 二、阿里云相关产品感性认识及场景化学习 三、阿里云产品上手操作 四、阿里云大数据产品概念、应用场景 五、阿里云安全...

张嵘鑫
02/15
0
0
浅谈wireshark解析ceph网络通信

一、安装wireshark wireshark从2.0版开始支持ceph协议解析 下载地址:https://www.wireshark.org/download/ 二、ceph网络抓包 使用tcpdump在ceph集群上抓包,e.g.:tcpdump -i ens33 -s 0 -...

zrz11
2018/11/05
142
2
JAVA网络编程:一站式学习Wireshark系列教程

Wireshark 基本介绍和学习 TCP 三次握手 一站式学习Wireshark(一):Wireshark基本用法 一站式学习Wireshark(二):应用Wireshark观察基本网络协议 一站式学习Wireshark(三):应用Wires...

HenrySun
2016/07/20
145
0
当被尬聊网络协议、我们可以侃点什么?

正如标题所写。这篇文章致力于网络协议的初级扫盲、方便应对日常甚至面试中的尬聊、也是为了对刚补完的网络协议做个归纳。 目录 TCP/IP协议族的体系结构 网络层 传输层 应用层 最后:网络协议...

kirito_song
2018/07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

采坑指南——k8s域名解析coredns问题排查过程

正文 前几天,在ucloud上搭建的k8s集群(搭建教程后续会发出)。今天发现域名解析不了。 组件版本:k8s 1.15.0,coredns:1.3.1 过程是这样的: 首先用以下yaml文件创建了一个nginx服务 apiV...

码农实战
25分钟前
3
0
【2019年8月版本】OCP 071认证考试最新版本的考试原题-第6题

choose three Which three statements are true about indexes and their administration in an Orade database? A) An INVISIBLE index is not maintained when Data Manipulation Language......

oschina_5359
27分钟前
4
0
阿里巴巴开源 Dragonwell JDK 最新版本 8.1.1-GA 发布

导读:新版本主要有三大变化:同步了 OpenJDK 上游社区 jdk8u222-ga 的最新更新;带来了正式的 feature:G1ElasticHeap;发布了用户期待的 Windows 实验版本 Experimental Windows version。...

阿里巴巴云原生
33分钟前
3
0
教你玩转Linux—磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题,Linux磁盘管理常用三个命令为df、du和fdisk。 df df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少...

xiangyunyan
36分钟前
6
0
js 让textarea的高度自适应父元素的高度

textarea按照普通元素设置height是没有作用的,可以这么来设置, 下面给上一段项目代码 JS代码: $.fn.extend({ txtaAutoHeight: function () { return this.each(function () {...

文文1
36分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部