带着问题从下往上看一遍网络协议

文章探讨了网络协议的不同层次,从物理层的比特流传输到应用层的通信协商。提到了数据链路层的帧和流量控制功能,以及IP协议在路由和转发中的作用。传输层的TCP和UDP协议被讨论,特别是TCP的可靠传输特性。最后,应用层关注的是双方如何理解和协商通信内容。
摘要由CSDN通过智能技术生成

前言:

       关于网络协议的内容很多很详细,本文不对网络中的详细内容和规则做讨论和讲解,本文是在对网络协议有了一个大致的了解之后,以后来者的角度粗略的看一遍网络协议,并发现一些当前环境下不是太能理解或认可的问题,提出它,并在后续内容去探究它。

        正如标题所说,从下到上来看一遍网络:

1.物理层。

  • 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
  • 物理层的作用是要尽可能地屏蔽掉不同传输媒体和通信手段的差异
  • 用于物理层的协议也常称为物理层规程 (procedure)。

物理层的知识和应用太靠近底层,用到的数学知识与科学理论较多,我们不做深入讨论,总结下物理层的工作和意义,物理层提供了数据传输的通路,屏蔽不同传输介质,不同自然环境下的差别,以速度更快,容量更大的为目标(数据交换,信道复用),使数字信息传输成为可能。此外,物理层提供了基础设施,但因为不同现场的生产环境不同,因此在更上一层的数据链路层才会有一些特定协议和功能来消除或抵消物理层的影响。

2.数据链路层。

  • 成帧 (Framing)

    将比特流划分成“帧”的主要目的是为了检测和纠正物理层在比特传输中可能出现的错误,数据链路层功能需借助“帧”的各个域来实现
    差错控制 (Error Control)
    处理传输中出现的差错,如位错误、丢失等
    流量控制 (Flow Control)
    确保发送方的发送速率,不大于接收方的处理速率,避免接收缓冲区溢出

  • 媒体接入控制 MAC (Medium Access Control)

    划分信道资源,协调通信过程,减少数据冲突。

这里遇到第一个问题,流量控制 这个功能,貌似是上层的IP,传输层TCP协议也有设计,为何出现了重复呢?

对于数据链路层上的流量控制,很容易理解:

-- 当接收方接收数据的能力无法跟上发送方的发送速率,需要调节发送方的速率或者丢弃数据帧。此时主要原因应该为发送方与接收方的数据处理能力不同。

对于IP协议中的流量整形与拥塞控制:
在两台直接相连的主机间是无需IP协议上的流量控制的,因为大多数数据传输都会经过若干个中断路由以及各类网络,所以可能在一些时间段内由于流量较大,使得超出某些路由器的处理能力或者线路拥塞。这时源发送方或者网络中的其他设备是不知道的,因此需要显式或隐式的表明拥塞,与此同时,路由器通过使用缓存以及利用令牌桶算法等方式,对网络中的流量进行调节。此时主要原因是因为整个通信链路是一张网,各节点线路间的数据流量压力和服务质量是不同的。

对于TCP协议中的拥塞控制与流量控制:

TCP作为传输层的协议,它主要是为了处理端到端的问题。其拥塞控制的目的,是为了主动发现网络中的可能存在的拥塞情况,并尽力以自己的保守退让来减少拥塞的发生,所以有了慢启动、拥塞避免的拥塞控制。而流量控制是为了以更高效,更可靠的方式传输数据,因此有了滑动窗口设计与Nagle算法。

3.网络层。

  • 网络层在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。其关键功能为路由与转发。

       为了实现点到点的通信,IP协议上有了一个源、目的IP地址标识,这里有一个问题也可以思考一下,数据链路层的MAC地址已经是一个唯一标识了,为什么还要在IP协议上设计一个IP协议呢?最主要的原因应该就是MAC地址的区域无关性,使得利用MAC地址无法高效的进行路由转发。详细分析可查看链接:有ip地址为什么要mac地址,或者说没有mac地址可以吗?。与此同时,由于IPv4地址数量相对稀缺,私网地址与子网的应用进一步丰富了网络,子网的意义不仅仅是节约IP地址,它更主要的是隔离网络网络环境,形成自运行的自治系统。以至于更大的网络乃至因特网都是层次结构,以降低网络复杂度,减少路由难度。这里和操作系统中的段页式内存管理,哈希运算等都是有着计算机本质上的技术与目的:减少运算复杂度,提高计算速度,在不同场景使用不同手段,在时间和空间上做出优化,或平衡。

       有了IP地址和高效的路由算法,已经可以实现网络层的基本功能了,其中所设计到的各类协议如ICMP,DHCP ,ARP等均是为IP服务的,网络地址转换NAT协议实现私网到公网/私网地址的访问,IPv6尝试解决IP地址不充足的问题。为了使网络运行通畅,设计了拥塞控制,流量调节,数据包调度等算法。

4.传输层。

实际上在网络层基础之上,仅需添加一个源、目的端口便可实现端到端的网络通信过程,为什么没有直接在IP协议上直接添加源、目的端口呢,直接实现传输层的功能,或者说IP协议能实现传输层的功能吗?详细分析在此文单独分析一次:ip可以实现传输层甚至应用层的协议吗?

因特网的网络层提供“尽力而为”的服务,尽最大努力在终端间交付分组,但不提供任何承诺,传输层可以通过差错恢复、重排序等手段提供可靠、按序的交付服务。一般熟悉的便是UDP/TCP协议。UDP应该可以算是最简单的传输层协议了,正如上面所说,IP加个端口便和它无太大差别了。TCP协议则为了是传输层更好的完成传输的作用,设计了诸如拥塞控制,流量控制,ACK确认机制等功能。

5.应用层。

应用层协议做的事情,主要就是一个功能:让双方能读懂对方,并更好的读懂对方。在传输层实现的功能之上,端到端的通信已经可以实现,就好比电话两端的人,已经能听到对方,但是要协商好说什么语言,用什么暗号,这些就是应用层要干的事情了。

至于C/S,B/S,P2P,长连接,短连接这些概念,只是一些场景下的不同表现,在网络通信中,并无本质区别。HTTP协议作为最常用的应用层协议,也在不停的升级和优化,详细内容不做讲述。关于计算机网络的详细内容可参靠一位老哥的介绍:小林coding图解网络介绍 | 小林coding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值