搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 小码之光 > 计算机网络——01网络模型

计算机网络——01网络模型

小码之光 2020-08-02

小码的今日分享!

目录:
  1. 概念
  2. 分类
  3. 网络分层
  4. TCP确认机制
  5. 连接与关闭
  6. TCP/UDP
  7. TCP/ISO面向连接与无连接
  8. 总结

一、概念

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统

二、分类

地理范围划分是一种大家都认可的通用网络划分标准。按这种标准可以把各种网络类型划分为局域网、城域网、广域网三种,最后介绍一下互联网。

  • 局域网:(Local Area Network,LAN)  通常我们常见的“LAN”就是指局域网,这是我们最常见、应用最广的一种网络。所谓局域网,那就是在局部地区范围内的网络,它所覆盖的地区范围较小。局域网在计算机数量配置上没有太多的限制,少的可以只有两台,多的可达几百台。一般来说在企业局域网中,工作站的数量在几十到两百台次左右。在网络所涉及的地理距离上一般来说可以是几米至10公里以内。这种网络的特点就是:连接范围窄、用户数少、配置容易、连接速率高。目前局域网最快的速率要算现今的10G以太网了。IEEE的802标准委员会定义了多种主要的LAN网:以太网(Ethernet)、令牌环网(Token Ring)、光纤分布式接口网络(FDDI)、异步传输模式网(ATM)以及最新的无线局域网(WLAN)。

  • 城域网:(Metropolitan Area Network,MAN)  这种网络一般来说是在一个城市,但不在同一地理小区范围内的计算机互联。这种网络的连接距离可以在10-100公里,它采用的是IEEE802.6标准。MAN与LAN相比扩展的距离更长,连接的计算机数量更多,在地理范围上可以说是LAN网络的延伸。在一个大型城市或都市地区,一个MAN网络通常连接着多个LAN网。如连接政府机构的LAN、医院的LAN、电信的LAN、公司企业的LAN等等。

  • 互联网:(internet)指的是若干网络之间所串连成的大型网络,这些网络以一组通用的协议相连,形成逻辑上的大型国际网络,始于1969年美国的阿帕网。通常internet泛指互联网,而Internet则特指因特网即国际互联网 。因特网于1969年诞生于美国,最初名为“阿帕网”(ARPAnet)是一个军用研究系统 ,采用TCP/IP协议,现在则已发展成为一个覆盖五大洲多个国家的开放型全球计算机网络系统。

三、网络分层

为什么要分层?在计算机之间通信,主要是为了发送一些数据信息,一台计算机把数据发送出去,首先要让网络识别目的主机,能够找到它;明确目的主机是否连接网络;机子上的应用是否打开准备接收数据以及相应的异常处理。让我们去处理的话,会怎么解决这些问题呢?这里建立了两种模型:

OSI七层模型:OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。

计算机网络——01网络模型

应用层:

网络服务与最终用户的一个接口。

协议有:HTTP FTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

表示层:

数据的表示、安全、压缩。

格式有,JPEG、ASCll,加密格式等

会话层:

建立、管理、终止会话,对应主机进程,指本地主机与远程主机正在进行的会话

传输层:

定义传输数据的协议端口号,以及流控和差错校验。

协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

网络层:

协议有:

数据链路层:

协议有:Ethernet  PPP

物理层:

建立、维护、断开物理连接,比特传输。


TCP/IP模型:(Transmission Control Protocol /Internet Protocol,传输控制协议/网络互联协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF国际互联网工程任务组的RFC 793  定义。

计算机网络——01网络模型

因为数据链路层和物理层的内容相差不多,所以在TCP/IP协议中它们被归并在网络接口层次里。只有四层体系结TCP/IP协议,与有七层体系结构的OSI相比要简单了不少,也正是这样,TCP/IP协议在实际的应用中效率更高,成本更低 。

ARP协议(网络层):

路由协议

四、TCP确认机制

应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

  • 在数据正确性与合法性上,TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和;同时可以使用MD5认证对数据进行加密。

  • 在保证可靠性上,采用超时重传和捎带确认机制。

  • 在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。

在拥塞控制上,采用TCP拥塞控制算法(也称AIMD算法)。该算法主要包括四个主要部分:

(1)慢启动

每当建立一个TCP连接时或一个TCP连接发生超时重传后,该连接便进入慢启动阶段。进入慢启动后,TCP实体将拥塞窗口的大小初始化为一个报文段,此后,每收到一个报文段的确认(ACK),拥塞窗口cwnd(congestion window)按指数增加。当cwnd值超过慢启动阐值或发生报文段丢失重传时,慢启动阶段结束。前者进入拥塞避免阶段,后者重新进入慢启动阶段。

(2)拥塞避免

在慢启阶段,当cwnd值超过慢启动阐值后,慢启动过程结束,TCP连接进入拥塞避免阶段。在拥塞避免阶段,每一次发送的cwnd个报文段被完全确认后,才将cwnd值加1。在此阶段,cwnd值线性增加。

(3)快速重传

快速重传是对超时重传的改进。当源端收到对同一个报文的三个重复确认时,就确定一个报文段已经丢失,因此立刻重传丢失的报文段,而不必等到重传定时RTO超时。以此减少不必要的等待时间。

(4)快速恢复

快速恢复是对丢失恢复机制的改进。在快速重传之后,不经过慢启动过程而直接进入拥塞避免阶段。每当快速重传后,置sshtesrh=cwnd/2,ewnd=ssthresh+3。此后,每收到一个重复确认,将cwnd值加1,直至收到对丢失报文段和其后若干报文段的累积确认后,置cwnd=ssthesrh,进入拥塞避免阶段。

五、连接与关闭

建立连接

TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN同步序列编号数据包连接请求后,等待对方回答

计算机网络——01网络模型

SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。

TCP三次握手的过程如下:

  1. 客户端发送SYN(SEQ=x序列号)报文给服务器端,进入SYN_SEND状态。

  2. 服务器端收到SYN报文,回应一个SYN (SEQ=y)+ ACK(ACK=x+1)报文,进入SYN_RECV状态。

  3. 客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入已连接状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

连接终止:

建立一个连接需要三次握手,而终止一个连接要经过四次挥手,这是由TCP的半关闭(half-close)造成的。如下图所示。

计算机网络——01网络模型

(1) 某个应用进程首先调用close,称该端执行“主动关闭”。该端的TCP于是发送一个FIN结束标志数据包,表示数据发送完毕。

(2) 接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认,发送ACK数据包。

注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因此,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。

(3) 此时两者之间能够继续互相发送数据包,然而一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字,这导致它的TCP也发送一个FIN。

(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)ACK确认这个FIN。既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。

注意

当一个进程无论自愿地(调用exit或从main函数返回)还是非自愿地(收到一个终止本进程的信号)终止时,所有打开的描述符都被关闭,这也导致仍然打开的任何TCP连接上也发出一个FIN。无论是客户还是服务器,任何一端都可以执行主动关闭。通常情况是,客户执行主动关闭,但是某些协议,例如,HTTP/1.0却由服务器执行主动关闭。

六、TCP和UDP

对比:

  • TCP 是面向连接的传输控制协议,而UDP 提供了无连接的数据报服务。

  • TCP 具有确认机制,确保传输数据的正确性,很少出现丢失或乱序。

  • UDP  在传输数据前不建立连接,不对数据报进行查改,无须等待对方的应答,会出现分组丢失、重复、乱序。

  • UDP 具有较好的实时性,工作效率较 TCP 协议高。

  • UDP 段结构比 TCP 的段结构简单,因此网络开销也小。

TCP  协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可靠性要求高的通信系统往往使用 TCP 传输数据,比如 HTTP运用TCP进行数据的传输。

七、TCP、ISO模型

面向连接与无连接,面向连接可以分为三个阶段:

  1. 发出链接,建立连接

  2. 连接成功才开始传输

  3. 数据传输完毕,必须释放连接

无连接直接进行数据传输。



TCP/IP模型减少了会话层,表示层,可以变成经典5层网络模型,TCP/IP协议能够迅速发展起来并成为事实上的标准,是它恰好适应了世界范围内数据通信的需要。它有以下特点:

(1)协议标准是完全开放的,可以供用户免费使用不收费。

(2)独立于网络硬件系统,可以运行在广域网,更适合于互联网。

对比:OSI层次间存在严格的调用关系,两个层通信必须通过下一层,不能越级,而TCP/IP可以越过下一层,直接使用更低层次所提供的服务,因而减少了一些不必要的开销,提高了效率;TCP/IP协议先出现,之后建立模型,而ISO/OSI先建立模型,后有协议。

总结


硬核!肝完了!

-----------------------------------------------




-----------------------------------------------

@开放学习、知识分享

        

                           

                            


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《计算机网络——01网络模型》的版权归原作者「小码之光」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注小码之光微信公众号

小码之光微信公众号:xiaoma-zg

小码之光

手机扫描上方二维码即可关注小码之光微信公众号

小码之光最新文章

精品公众号随机推荐