计算机网络(一)-互联网协议

版权声明:本文为博主原创文章,转载添加原文链接 https://blog.csdn.net/qq_34190023/article/details/82561752

互联网协议

 

互联网是如何实现的?

全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?

互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。

对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。

 

网络协议:为进行网络中的数据交换而建立的规则、标准或约定

网络协议的组成要素:

1语法:数据和控制信息的结构或者格式

2语义:需要发出何种控制信息,完成何种动作以及做出何种应答

3同步:事件实现顺序的详细说明

 

计算机网络体系结构:计算机网络的各层及其各层协议的集合

计算机网络体系结构

OSI:开放系统互联基本参考模型,Open Systems Interconnection Reference Model

协议:为了进行网络中的数据交换而建立的规则、标准或约定称为网络协议。

分层带来的好处:

1、各层独立,将大问题分解成多个独立的小问题

2、灵活性好,只要保证接口不变,内部实现可以修改并不影响上下层

3、结构上易于分开

4、易于实现与维护

5、促进标准化工作

 

ISO定义的开放互联(OSI)模型

定义了网络互联7层结构,OSI定义了各层提供的服务,服务与实现无关。

1.物理层:

定义了为建立、维护和拆除物理链路所需的机械的、电气的、功能的和规程的特性,

其作用是使原始的数据比特流能在物理媒体上传输。具体涉及接插件的规格、“0”、“1”信号的电平表示、收发双方的协调等内容。

利用物理传输介质为数据链路层提供物理连接,透明地传输比特率。实现介质访问控制。

物理介质双绞线、同轴电缆、光缆等。

2.数据链路层:传输数据单位是

比特流被组织成数据链路协议数据单元(通常称为帧),并以其为单位进行传输,帧中包含地址、控制、数据及校验码等信息。数据链路层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路改造成对网络层来说无差错的数据链路。数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲器溢出及线路阻。

在通信的实体之间建立数据链路连接,传送以“帧”为单位的数据,采用差错控制、流量控制方法,使有差错的物理链路编程无差错的数据链路。

3.网络层:传输数据单位是分组或包

网络层----数据以网络协议数据单元(分组)为单位进行传输。网络层关心的是通信子网的运行控制,主要解决如何使数据分组跨越通信子网从源传送到目的地的问题,这就需要在通信子网中进行路由选择。另外,为避免通信子网

中出现过多的分组而造成网络阻塞,需要对流入的分组数量进行控制。当分组要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。

通过路由算法,为分组通过通信子网选择一条最佳路径,网络层要实现路由选择、拥塞控制和网络互联

4.传输层:传输数据单位是报文

传输层----是第一个端--端,也即主机--主机的层次。传输层提供的端到端的透明数据运输服务,使高层用户不必关心通信子网的存在,由此用统一的运输原语书写的高层软件便可运行于任何通信子网上。传输层还要处理端到端的差错控制和流量控制问题

向用户提供可靠的端到端服务,透明地传送报文,向高层屏蔽了下层数据通信的细节。负责主机中两个程序之间的通信

5.会话层:

会话层----是进程--进程的层次,其主要功能是组织和同步不同的主机上各种进程间的通信(也称为对话)。会话层负责在两个会话层实体之间进行对话连接的建立和拆除。在半双工情况下,会话层提供一种数据权标来控制某一方何时有权发送数据。会话层还提供在数据流中插入同步点的机制,使得数据传输因网络故障而中断后,可以不必从头开始而仅重传最近一个同步点以后的数据。

组织两个会话进程之间的通信,并管理数据的交换,建立传输错误纠正与保证数据完整性的控制机制。

6.表示层:

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

数据压缩和加密也是表示层可提供的表示变换功能

主要解决用户数据的语法表示问题。处理在两个通信系统汇总交换信息的表示方式。数据格式变换,数据加密与解密,数据压缩和恢复功能

7.应用层:

应用层是开放系统互连环境的最高层。不同的应用层为特定类型的网络应用提供访问 OSI环境的手段。网络环境下不同主机间的文件传送访问和管理(FTAM)、传送标准电子邮件的文电处理系统(MHS)、使不同类型的终端和主机通过网络交互访问的虚拟终端(VT)协议等都属于应用层的范畴。

为应用程序提供了网络服务,应用层需要识别并保证通信对方的可用性,使得协同工作的应用程序之间的同步,建立传输错误纠正与保证数据完整性的控制机制。

应用层提供的是特殊的网络应用服务,如邮件服务、文件传输服务等

 

dns实现域名解析,定义各种网络服务

 

通信子网实际上由物理层、数据链路层和网络层这三个层次构成

 

TCP/IP体系结构:

TCP/IP协议簇分为四个层次,分别是应用层、运输层、网际层和网络接口层

应用层:是TCP/IP体系结构的最高层。在该层中有许多著名协议,如远程登录协议TELNET,文件传送协议FTP,简单邮件传送协议SMTP等

运输层:是主机到主机的层次。该层使用两个不同的协议为网络用户提供服务,一个是面向连接的传输控制协议TCP,提供可靠的数据传输服务。另一个是无连接的的用户数据报协议UDP,提供尽最大努力交付服务。

网际层:该层的主要协议是网际协议IP,也就是在该层实现了不同网络的互连,著名的IP地址就是IP协议的组成部分之一。与网际协议IP配合使用的还有三个协议:Internet控制报文协议ICMP,地址解析协议ARP和反向地址解析协议RARP。

 

Q:与OSI相比,TCP/IP具有很多不同之处:

  • TCP/IP一开始就考虑到各种异构网络的互连问题,将网际协议IP作为TCP/IP的重要组成部分。但OSI制定时最初只考虑到全世界都使用一种统一的标准将各种不同的系统互连起来。
  • TCP/IP一开始就把面向连接服务和无连接服务并重,并在网际层使用无连接服务,但OSI在开始时各个层都采用面向连接服务,降低了效率。
  • TCP/IP在较早时就有了较好的网络管理功能,但OSI到后来才开始考虑。
  • TCP/IP的不足主要在于TCP/IP模型对“服务”、“协议”和“接口”等概念没有很清楚地区分开,TCP/IP模型的通用性较差。此外,TCP/IP但网络接口层严格来说并不是一个层次而仅仅是一个接口。

 

 

五层结构(七层结构是在应用层下增加表示层与会话层,更多是一种理论的结构,实际多以五层结构表示)

1、应用层

2、传输层

3、网络层

4、数据链路层

5、物理层

 

一、互联网协议概述

1.1 五层模型

互联网的实现,分层。每一层都有自己的功能,每一层都靠下一层支持。

用户接触到的,只是最上面的一层,没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。

如何分层有不同的模型,有的模型分七层,有的分四层。分成五层比较容易解释。

"物理层"(Physical Layer),主要负责在物理线路上传输原始的二进制数据

"数据链路(链接)层"(Link Layer)主要负责在通信的实体间建立数据链路连接

"网络层"(Network Layer)主要负责创建逻辑链路,以及实现数据包的分片和重组,实现拥塞控制、网络互连等功能

"传输层"(Transport Layer)负责向用户提供端到端的通信服务,实现流量控制以及差错控制

"应用层"(Application Layer)为应用程序提供了网络服务

越下面的层,越靠近硬件;越上面的层,越靠近用户。

它们叫什么名字,其实并不重要。只需要知道,互联网分成若干层就可以了。

 

1.2 层与协议

每一层都是为了完成一种功能。为了实现这些功能,就需要遵守共同规则【"协议"(protocol)】。

互联网的每一层都定义了很多协议。这些协议的总称叫做"互联网协议"(Internet Protocol Suite)。是互联网的核心。

二、实体层(物理层)

电脑要组网,第一件事要先把电脑连起来,可用光缆、电缆、双绞线、无线电波等方式

这就叫做"实体层",就是把电脑连接起来的物理手段。主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

物理层定义物理设备如何传输数据。就是电脑硬件,网卡,网线,光缆

 

物理层的主要任务就是确定与传输媒体接口有关的一些特性,包括:

1、机械特性

2、电气特性

3、功能特性

4、过程特性

 

信息交互方式

1、单工通信:数据信号始终沿着一个方向传输,一方永远是发送方,另一方永远是接收方

2、半双工通信:通信双方都可以发送(或接收)数据,但不能同时双向发送

3、全双工通信:通信双方可以同时发送和接收信数据,即数据可以同时作双向传输

 

串行传输和并行传输:

串行传输采用的同步方式有两种:同步传输方式(固定的时钟街拍发送数据信号)和异步传输方式(每个字符在传输时都前后分别加上起始位和结束位,以表示一个字符的开始和结束)

同步传输克服了异步传输方式中的每一个字符都要附加起止信号的缺点,具有较高的效率,但实现较为复杂,常用于高速数据传输

 

信道复用技术

为了有效地利用通信线路,就希望一个信道能同时传输多路信号,这就是所谓多路复用的概念。

1、频分服用(FDM)——按照频率不同来区分信号的一种方法,用户在同样时间占用不同资源

2、时分复用(TDM)——将一条线路的工作时间划分为一段段等长的时分复用帧(TDM帧),每一个TDM帧中再划分成若干时间片,每一个时分复用的用户在每个TDM帧中占用固定序号的时间片,来使用公共线路。所用用户在不同时间占用相同资源【统计复用又称为异步时分复用,普通的时分复用称为同步时分复用】

3、波分复用(WDM)——光的频分复用

4、码分复用

 

三、链接层(数据链路层)

单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?这就是"链接层"的功能,在"实体层"的上方,确定了0和1的分组方式

数据链路层在通信的实体间建立数据链路连接。电脑之间0101的传输

3.2 以太网协议

早期,每家公司都有自己的电信号分组方式。一种叫做"以太网"(Ethernet)的协议,占据了主导地位。

以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。

"标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。

"标头"的长度固定为18字节。"数据"的长度,最短46字节,最长为1500字节

因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送

3.3 MAC地址

以太网数据包的"标头",包含了发送者和接受者的信息。

发送者和接受者是如何标识呢?

以太网规定,连入网络的所有设备,都必有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡

MAC网卡地址:数据包的发送地址和接收地址。

每块网卡出厂的时候,都有唯一的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。

前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有MAC地址,就可以定位网卡和数据包的路径了。

 

3.4 广播

Q:一块网卡怎么会知道另一块网卡的MAC地址?

有一种ARP协议,可以解决这个问题。以太网数据包必须知道接收方的MAC地址,然后才能发送。

 

Q:有MAC地址,系统怎样才能把数据包准确送到接收方?

以太网采用了一种很"原始"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。

1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"(broadcasting)

有了数据包的定义、网卡的MAC地址、广播的发送方式,"链接层"就可以在多台计算机之间传送数据了。

 

 

数据链路:除了代表物理层的一条物理线路外,还包括一些控制数据传输的通信协议,二者结合起来就是数据链路

网络适配器:数据链路层协议一般是由网络适配器实现的,它实现了数据链路层与物理层两层的功能。它的主要作用是实现计算机与外界局域网通信。

数据链路层的协议数据单元:

点对点的数据链路通信步骤(点对点的数据链路、使用广播信道的数据链路是两种主要的数据链路):

1、节点A把该节点网络层交下来的IP数据报添加首部与尾部封装成帧

2、节点A把封装好的帧通过物理层链路发送给节点B

3、节点B在检查接收到的帧无差错时,上交给B节点的网络层,否则,丢弃此帧

数据链路层协议要解决的三个基本问题:

1、封装成帧——帧开始符SOH,结束符EOT

2、透明传输——防止传输文本出现SOH或EOT,造成错误开始或错误结束

3、差错检测——广泛使用CRC循环冗余检测

 

P2P点对点协议是数据链路层使用最多的协议,他提供不可靠的数据报服务;因为数据链路层不必要提供比网络层IP协议更多的功能,所以PPP协议不需要纠错,不需要序号,不需要流量控制,简单就是PPP协议首要的要求与最大特点

 

以太网:当今使用最广泛的局域网规范,使用CSMA/CD技术,并以10M/S的速率运行在各种电缆上

CSMA/CD协议:载波监听多点接入/碰撞检测
CSMA/CD核心要点:
1、“多点接入”,许多计算机以多点接入方式互联到一条总线上,同一时刻只有一台计算机可以占用总线传输数据
2、“载波监听”,每个站(计算机)都必须不停检测信道是否在传输数据,没有被占用才能获得发送权
3、“碰撞检测”,边发送边监听,如果检测到有总线有两个站同时传输数据,立即停止传输
MAC地址:以太网的物理地址

网桥:可转发、过滤帧,可连接不同物理层、MAC子层与不同以太网,可在数据链路层扩展以太网,缺点是增加时延。

集线器:可转发比特流,工作在物理层,在物理层扩展以太网

 

四、网络层(建立主机到主机通信)

网络层为数据在结点之间传输创建逻辑链路

4.1 网络层的由来

以太网协议,依靠MAC地址发送数据。

理论上,单单依靠MAC地址,技术上可以实现通信。但有一个重大的缺点。广播效率太低了。

以太网采用广播方式发送数据包,所有成员人手一"包",不仅效率低,而且局限在发送者所在的子网络

如果两台计算机不在同一个子网络,广播是传不过去的。这种设计是合理的,否则互联网上每一台计算机都会收到所有包,那会引起灾难。

互联网是无数子网络共同组成的一个巨型网络,上海和洛杉矶的电脑不可能会在同一个子网络

因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。

如果是同一个子网络,就采用广播方式发送,否则就采用"路由"方式发送。("路由"指如何向不同子网络分发数据包)

MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。

 

这就导致了"网络层"的诞生。

网络层的作用:引进一套新的地址,使得能够区分不同的计算机是否属于同一个子网络。这套地址叫做"网络地址"。

 

"网络层"出现以后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。

 

网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。

从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。

 

4.2 IP协议

IP协议:规定网络地址的协议。它所定义的地址,就被称为IP地址。

目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成

习惯上,用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。

IP地址分为网络部分主机部分,网络部分用子网掩码描述

互联网上的每台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机

如,IP地址172.16.254.1,一个32位的地址,假定网络部分是前24位(172.16.254),那主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,即172.16.254.2应该与172.16.254.1处在同一个子网络。

 

单单从IP地址无法判断网络部分,这样就无法判断两台计算机是否属于同一个子网络。引入另一参数"子网掩码"(subnet mask)。

"子网掩码":就是表示子网络特征的一个参数。在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1主机部分全部为0

知道"子网掩码",就能判断任意两个IP地址是否处在同一个子网络。将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果相同就表明它们在同一个子网络中,否则就不是。

 

总结,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

 

4.3 IP数据包

IP数据包:根据IP协议发送的数据。其中必定包括IP地址信息。

但是以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?

回答是不需要,可以把IP数据包直接放进以太网数据包的"数据"部分,因此完全不用修改以太网的规格。这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构

 

具体来说,IP数据包也分为"标头"和"数据"两个部分。

"标头"部分主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。

它放进以太网数据包后,以太网数据包就变成了下面这样。

4.4 ARP协议

关于"网络层"

因为IP数据包是放在以太网数据包里发送的,所以必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。通常情况,对方的IP地址是已知的,但是不知道它的MAC地址。

所以,需要一种机制,能够从IP地址得到MAC地址

 

分成两种情况:

1.如果两台主机不在同一个子网络,事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的"网关"(gateway),让网关去处理

2.如果两台主机在同一个子网络用ARP协议得到对方的MAC地址

 

ARP协议是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址否则就丢弃这个包。

 

有了ARP协议后,就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。

 

 

 

IP地址有关知识参看IP地址分类与子网掩码http://blog.csdn.net/zhangliangzi/article/details/51263337

 

地址解析协议ARP:将主机和路由器的IP地址解析到硬件地址。

ARP机制:每个主机都有一个ARP高速缓存,里面有本局域网中各主机、路由器的IP地址到硬件地址的映射表,而且这个映射表还经常动态更新。

 

网际控制报文协议ICMP:提供主机或路由器询问情况、报告差错或异常情况。

ICMP报文类型:1、差错报告报文2、询问报文

ICMP应用:使用ping命令,在应用层越过传输层直接使用ICMP协议回送请求与回送回答报文,测试主机之间连通性。

 

路由器分组转发算法(网络层操作):

从数据报首部提取出目的主机的IP地址,根据IP地址类别(A、B、C、D类),提取出网络地址

1、若网络地址N就是与路由器相连的网络地址,则直接将数据报交付给该网络的目的主机。(这里包括了网络接口软件通过ARP协议将IP地址转化为MAC地址,将数据报封装成链路层MAC帧,通过物理层线路发送此帧到目的主机的过程)

2、若网络地址不是与路由器相连的网络地址,则查询路由表

     2.1、若路由表中有目的地址为数据报IP地址的特定主机路由,则将数据报发送给路由表指定的下一跳路由

     2.2、若路由表中有到达目标网络地址为N的路由,则将数据报发送给路由表指定的下一跳路由

     2.3、若路由表中有一个默认路由,则将数据报发送给路由表中的默认路由

     2.4、报告分组转发错误

 

 

五、传输层(建立端口到端口通信)

传输层:提供了端到端的服务。建立两端连接后,如何传递数据,传输数据的方式都在这里定义了。太大了需要分包,分片,另一端需要组装,如何组装等都在这一层定义

传输层向高层拼比了下层数据通信的细节

 

5.1 传输层的由来

有了MAC地址和IP地址,已经可以在互联网上任意两台主机上建立通信。

 

同一台主机上有许多程序都需用到网络,需要一个参数表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"(port),它是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

"端口"是0到65535之间的一个整数,正好16个二进制位0到1023的端口被系统占用,用户只能选用大于1023的端口【1024-49151为注册端口,49152-65535为动态或私有端口】。应用程序会随机选用一个端口,然后与服务器的相应端口联系。

"传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信

只要确定主机和端口,就能实现程序之间的交流。

 

Unix系统就把主机+端口,叫做"套接字"(socket)。有了它,就可以进行网络应用程序开发了。

 

传输层需要提供一台主机到另一远程主机的端对端通信控制,传输层利用互联网层发送数据,每一传输层都需要封装在一个互联网的数据报中通过互联网,到达目的地后,互联网层再将数据提交给传输层。

 

注:传输层虽然使用互联网来携带报文,但互联网层并不阅读或干预报文。传输层仅把互联层看成一个包通信系统,这一通信系统负责连接两端的注解

【传输层依赖于互联层】

 

可靠性是计算机系统的基础,在网络数据传输中用户希望互联网能够提供迅速、准确、可靠的通信功能,保证不发生丢失,重复,乱序等可靠性问题、

 

传输层是TCP/IP体系重要的一层,主要作用是保证端到端数据传输的可靠性

TCP和UDP是传输层最重要的两种协议

Tcp:传输控制协议;udp:用户数据报协议

 

5.2 UDP协议(传输层)

在数据包中加入端口信息,需要新的协议。最简单的实现叫UDP协议,格式是在数据前面,加上端口号。

UDP数据包,也是由"标头"和"数据"两部分组成。

"标头"部分主要定义了发出端口和接收端口,

"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分, IP数据包放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

UDP数据包非常简单,"标头"部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

从用户角度来看,UDP处于传输层UDP提供了面向无连接,不可靠的传输服务

UDP可以将数据直接封装在IP数据报中进行发送,不使用确认信息对数据的到达进行确认,不对收到的数据进行排序

UDP在运行高效和实现简单下,可能出现数据丢失,乱序和重复的现象。(所以应用层需要承担检测)

 

UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

为了提高网络可靠性,TCP协议。

TCP协议复杂,可近似认为,TCP协议是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

 

5.3 TCP协议

TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。

TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

TCP可以提供面向连接、可靠的、全双工的数据流传输服务,保证数据在连接关闭之前可被可靠地投递到目的地

 

TCP提供的服务有如下特征:

面向连接:发送数据前,应用程序首先建立一个到目的主机的连接

完全可靠性:TCP确保通过一个连接发送数据正确到达目的地,不会发生数据丢失和乱序

全双工通信:TCP允许任意一方,任意时刻发送数据。

流接口:TCP提供一个流接口,应用程序利用它可以发送连续的数据流

连接的可靠性与优雅关闭:建立连接的过程中,TCP保证新连接不会与其他链接混淆,连接关闭时,TCP确定前传递的所有数据都可靠地到达目的地

 

 

  1. TCP可靠性实现

可靠性指数据丢失后恢复的问题连接的可靠性建立

  1. 数据丢失和重发:需要双方协商解决(确认机制)

接收方确认后,回复确认信息,发送方发数据是启动一个定时器,如果没有收到确认的话,重发该数据

用karn算法计算tcp等待时间的算法。

Tcp选择重发有适应性

  1. 连接的可靠性与优雅关闭:采用三次握手的方法,使得连接可靠。采用四次分手方法。

先发连接请求(含自己的初始序列号)【注意:序列号是随机数】(32位的序列号)

收到后,给确认信息(包含接受方的一个序列号),序列号是随机数

传输数据,并回复确认信号

三次握手可以避免过时的连接请求

  1. TCP缓冲、流控与窗口:通过窗口机制进行流量控制。

连接时,每一端发送窗口报告(告知缓冲区可以接受的数据数)

确认收到数据,附带自己剩余的缓存区尺寸

剩余的缓冲区空间的数量称为窗口

如果发送方速度大于接受方速度,导致接收方发送一个零窗口,让发送方必须停止发送()

 

Tcp使用窗口和窗口控制的方式控制tcp的流量,使得发送方的数据不会溢出接收方的缓冲空间

  1. 连接与端口:一个tcp连接的两端称为端口。端口用16位

TCP可以用端口提供多路复用功能。

传输层端口,根据端口号来决定数据处理权。(端口提供不同应用服务)

服务器和客户端都有端口(客户机发送的访问请求也要用服务器的端口对应)

 

 

 

Q:TCP与UDP区别和联系

TCP与UDP基本区别

  1.TCP面向连接。UDP面向无连接,发送之前不需要建立连接。

  2.TCP要求系统资源较多,UDP较少; TCP首部开销20字节;UDP的首部开销小,只有8个字节

  3.UDP程序结构较简单

  4.流模式(TCP)与数据报模式(UDP);

TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

UDP无拥塞控制,网络出现拥塞不会使源主机的发送速率降低(对实时应用有用,如IP电话,实时视频会议等)

  5.TCP保证数据正确性,UDP可能丢包

  6.TCP保证数据顺序,UDP不保证

  7.每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

  8.TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保   证可靠交付

 

TCP应用场景:

 

 

UDP应用场景:

  1.面向数据报方式

  2.网络数据大多为短消息

  3.拥有大量Client

  4.对数据安全性无特殊要求

  5.网络负担非常重,但对响应速度要求高

 

UDP:

UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中如果出现了丢包,UDO也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交给由采用UDO的应用程序去处理。换句话说,UDP将部分控制转移到应用程序去处理,自己却只提供作为传输层协议的最基本功能。UDP有点类似于用户说什么听什么的机制,但是需要用户充分考虑好上层协议类型并制作相应的应用程序。

 

TCP:

TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输

 

 

 

 

概述:虽然IP层将分组数据送到目的主机,但严格讲,计算机网络中的两个主机通信其实是两个主机上的应用进程通信,通信的端点不是主机而是主机上的应用进程。网络层提供主机间的逻辑通信,运输层提供端口间的逻辑通信。


UDP的主要特点:

1、UDP是面向无连接的运输层协议,发送数据前不用建立连接,可靠性降低但提高效率

2、UDP是提供最大努力的交付服务

3、UDP是面向报文的,即一次发送一个报文,不合并、不拆分,但如果数据过长会在网络层IP分片传输,影响网络层效率

4、UDP无法避免网路拥塞时的数据丢失,但保证了发送数据的稳定速率

5、UDP支持一对一、一对多、多对多的通信

6、UDP首部较短只有8字节,较TCP的20字节(只包括固定字段长度)减小了开销。

UDP首部字段:

1、源端口

2、目的端口

3、长度,数据报的长度

4、校验和,验证传输信息是否有错,有错就丢弃


TCP的主要特点:

1、TCP是面向连接的运输层协议。使用TCP之前必须建立TCP连接,就跟打电话一样,接通后才能通话

2、TCP连接是点对点的,只能有两个端口

3、TCP提供可靠的服务,无差错、不丢失、不重复、按序到达,而运输层以下都是不可靠的尽力提供最大努力的服务。

4、TCP提供全双工通信,通信两端都设有发送缓存与接收缓存,可在空闲时发送或接受

5、TCP面向字节流

套接字(Socket)= IP地址:端口号

TCP报文首部字段:

主要首部字段解释:

1、序号:该报文段的数据段第一个字节占整条报文数据段的位置

2、确认号:期望收到的下一个报文段的序号(如:上一个报文段序号位600,数据段长度为100,在正确接收后,这次期望接受的数据序号为700)

3、窗口大小:指出允许对方发送的数据量,可动态变化

4、校验和:验证数据完整性与正确性

5、紧急指针:指出本报文字段中紧急数据的尾部位置,注意:当窗口为0时也可以发送紧急数据

6个控制位解释:

1、ACK起应答作用,占1位;仅当ACK=1时,确认号字段才有效,ACK=0时,确认号无效

2、SYN起同步作用;当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文

3、FIN用来释放一个连接;FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放TCP连接

4、PSH表示接收方应将报文交给应用层

5、RST表示连接重置

6、URG表示紧急指针,URG=1表示有紧急数据


TCP三次握手与四次挥手参看TCP三次握手与四次挥手详解http://blog.csdn.net/zhangliangzi/article/details/50695611


TCP可靠传输机制

1、流量控制,滑动窗口机制——让发送方发送速率不太快,接收方来得及接收,通过滑动窗口机制实现,即接受方多次发出响应报文修改首部字段的窗口值以控制发送方数据发送速率

2、拥塞控制,慢开始、拥塞避免、快重传、快恢复机制

 

 

 

 

六、应用层

应用层:为应用软件提供了很多服务。构建与TCP协议之上,屏蔽了网络传输相关的细节

 

应用程序收到"传输层"的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

"应用层"的作用,就是规定应用程序的数据格式

举例,TCP协议可以为各种各样的程序传递数据,如Email、WWW、FTP等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。

最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因现在的以太网的数据包就变成下面这样。

Http、FTP协议

 

 

DNS:域名系统

DNS域名解析:将域名解析成对应IP地址

DNS域名服务器类型:

1、根域名服务器

2、顶级域名服务器

3、权限域名服务器

4、本地域名服务器

DNS服务器域名解析流程:

1、用户在浏览器输入要访问的网站的域名,如果操作系统检查到本地hosts文件中缓存着这个域名的映射关系,则直接调用,完成域名解析。 
2、如果hosts文件中没有,则浏览器向本地DNS请求解析,如果缓存着映射关系,则返回结果,完成解析; 
3、如果本地DNS没有,则将请求发往RootDNS(根DNS服务器),根DNS服务器会告知本地服务器去查询网站授权的DNS服务器,即把网站授权DNS服务器的IP地址发送给本地DNS服务器(网站授权的DNS服务器即为顶级、权限域名服务器); 
4、网站授权DNS服务器将解析得到的IP地址发回本地DNS,本地DNS缓存映射关系并将IP地址发回给用户; 
5、浏览器在得到IP地址后,向其发出HTTP请求。


FTP:文件传送协议,基于TCP,要求建立两个并行的TCP连接,“控制连接”与“数据连接”


万维网(WWW):一个大规模的、联机式的信息储藏所。浏览器就是万维网的客户端程序,客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所需要的万维网文档,也成为页面

万维网与互联网、以太网关系及区别:万维网就是我们常说的互联网,而以太网是万维网的一种组网类型,是局域网采用的通用规范标准。

URL:统一资源标识符,万维网用URL来唯一标识万维网文档

HTML:超文本标记语言

HTTP:万维网中客户端与服务端严格遵守的超文本传输协议,它本身是一种无状态、无连接协议,但它依赖于TCP实现数据传输,而TCP是有状态、有连接的,关于HTTP可参看HTTP必知必会http://blog.csdn.net/zhangliangzi/article/details/51336564


SMTP:简单邮件传送协议,同样依赖于TCP实现邮件传输

POP3:邮局协议

POP3特点:采用客户-服务器工作方式,接收邮件的用户必须运行POP客户程序,与接收方的ISP的邮件服务器必须运行SMTP与POP服务器程序;优点是非常简单,缺点是只要用户从POP服务器中读取了邮件之后,POP服务器就将邮件删除

IMAP:网际报文存取协议

IMAP特点:用户PC运行IMAP客户端程序,然后与接收方的邮件服务器上的IMAP服务器建立TCP连接,使用户可以直接操作邮件服务器的邮箱;IMAP最大好处就是用户可以在不同地方使用不同计算机处理邮件,缺点就是多次查看就需要多次建立TCP连接

基于万维网的电子邮件:163、GMAIL、新浪都使用这种邮件服务;浏览器编写邮件,然后通过HTTP协议把邮件发送到该网站的邮件服务器上,然后通过SMTP将邮件发送到接收方网站的邮件服务器上,再通过HTTP把邮件发送到对应用户的浏览器邮箱中。

MIME:通用互联网邮件扩充,旧标准规定邮件文本不能包含7为ASCII代表的字符集以外的字符,MIME定义了许多邮件内容的格式,规定了各种格式的传送编码,可对任何内容格式进行转换。可通过邮件首部字段定义,如Content-Type=text/html;charset=utf-8


DHCP:动态主机配置协议。提供了一种“即插即用连网”,这种机制允许一台计算机自动加入新的网络并获取IP地址。当客户程序移植到一个新的网络时,就可以使用DHCP自动获取配置信息。

 

 

 

 

 

 

 

 

这是从系统的角度,解释互联网是如何构成的。

互联网的总体构思,从下至上,每一层协议的设计思想。这是从设计者的角度看问题,

切换到用户的角度,看看用户是如何从上至下,与这些协议互动的。

 

 

猜你喜欢

转载自blog.csdn.net/qq_34190023/article/details/82561752
今日推荐