这个系列的文章是用来记录自己学习计算机网络的理解和感悟,纯个人笔记。
对于网络来说,ISO七层结构也好,还是常用的五层结构也好,其中TCP/IP协议栈在计算机网络通信中都是至关重要的。
其实,网络结构是分成三大层次的,应用层,中间层,物理层。
最上面的层次是应用层,编程中的应用可以使用TCP/UDP提供的API接口(Socket)来进行网络编程,处理数据的收发,不用关心底层的细节。Web程序使用的HTTP/HTTPS协议都是基于TCP协议,邮箱应用使用的SMTP协议也是基于TCP协议,FTP也是基于TCP协议。如果编程写程序来传输数据为了方便可以使用HTTP,SMTP,FTP协议来传输数据,当然可以不用这些协议,程序可以直接使用TCP/UDP的Socket接口来收发数据。使用TCP Socket需要Server和Client,传输先建立连接,适合稳定可靠的传输,丢包会重传。TCP Socket在编程的难度上小于UDP Socket。TCP有连接,基于字节流(放送后接收方想取多少取多少),而UDP无连接,基于数据报文(有多少发多少收多少),适用实时传输,快速的数据传输。
中间层指TCP/IP协议栈,这一层包含了数据传输的大量细节,体现在各种复杂饭协议上,比如TCP/UDP协议以及互联网的基石IP协议。这个层次是至关重要的一层,应用层能够不关注网络传输的细节全靠这层。
最下面一层是物理层,包含ISO七层结构中的数据链路层和物理层。这层包含大量的具体数据传输的细节,大量协议来描述传输数据的细节和信息。PPP等点对点的数据传输协议就是典型的代表。我认为物理层主要是对局域网内两个主机进行数据交换的细节规定描述。
PPP协议(Point to Point Protocol),是数据链路层的协议。PPP现在主要用于拨号上网,连入ISP提供的网络。PPP数据帧对IP报文分组进行封装以便用来传输IP分组,数据帧格式为头部信息(包括开头,控制,协议部分),信息部分(IP报文分组,MTU <= 1500Byte)和尾部部分(0x7e)。PPP协议会提供差错检验,接入ISP网络的时候可以进行对称加密的身份认证等。
因为PPP协议是数据链路层的点对点协议,所以网络层传下来的IP报文分组就是通过PPP协议来传输的。
我们如果使用20M的宽带,理论上的网络带宽可以达到2.5MB/s,但是实际上可以达到理论值的75%就很好了,那为什么呢?
原因有很多,除了网络中的拥塞,各种网络设备的时延迟,路由器的转发速度,网线的传输损耗,还有就是传输的数据需要加上TCP头部,IP头部,MAC帧头部,所以不能百分百的实现真正的传输有用的应用数据。

参考: 深入网络带宽
如何根据网站并发量来计算网站需要多少带宽? 参考: 计算并发网站带宽
网友评论