写在前面的话: 大三了,目前在搞web开发的学习,TCP/IP,htttp/https的重要性不言而喻,我决定重搞一下大一已经学过的计算机网络,梳理一下计算机网络中的重点。学习计算机网络,可能有点枯燥难学,但是你只要带着一个问题,当我们用聊天软件跟朋友聊天时,信息是怎么到达朋友的计算机的?带着这个疑问,去串通整个计算机网络的知识,这样会很不错。看完我的系列文章,或许你心中将有答案!
我是梦阳辰,未来我陪你一起成长。 这是《程序员必学的计算机网络知识》总篇,限于篇幅较长,将各层次分篇进行讲述。点击下文的链接可以链接到各文!
概述
1.为什么要学习计算机网络?
1)学好计算机网络,我们可以知道,计算机网络是如何实现的,扩展我们的知识面。
2)学好计算机网络更有利于我们的网络编程。
3)面试的时候,大厂必问计算机网络知识点。如:TCP和UDP的区别?TCP为什么三次握手,四次挥手?…
2.什么是计算机网络?
计算机网络是通信线路和通信设备将分布在不同地点的具有独立功能的多个计算机系统互相连接起来,在网络软件的支持下实现彼此之间的数据通信和资源共享的系统。
计算机之间如何实现通信的?
当我们使用QQ应用跟朋友进行通信的时候。它是怎么实现的呢?
首先我们的电脑有很多应用,我们用QQ发送数据给朋友的电脑上,但是如何将这些数据构造成报文呢?在这些报文中的各个字段的含义是什么?进程何时发送这些报文?
这些问题将我们带进应用层协议的范围 ,应用层协议 (application-layer protocol) 定义了运行在不同端系统上的应用程序进程如何相互传递报文。
那什么是进程,什么是协议呢?
协议是:控制两个对等的实体(发送或接收信息的硬件或软件进程)进行通信规则的集合。
关于进程请看这篇文章:java多线程编程从入门到卓越(超详细总结)
就算应用程序知道如何传递报文,何时传递报文。但是如何让接受方电脑知道我发送的消息是给QQ这个进程的而不是给微信或其它应用进程的呢?这时运输层来帮我们解决这个问题。运输层提供进程与进程之间的逻辑通信。也就是说只要把应用层报文交给下面的运输层,运输层就可以把这报文传到对方的运输层。
那么问题又来了如何让自己发送的消息发送给特定的主机(计算机)呢?这时网络层帮我们解决了这个问题(IP数据报的首部明确标志了这两台主机的IP地址)。网络层为主机之间提供逻辑通信。
但是我们知道数据从源主机到目的主机需要在构成端到端通信路径的各段链路上传输。那么数据是如何在构成端到端通信路径的各段链路上传输的呢?当传输过程中出现差错该怎么处理呢?
假如直接采用物理线路传输,而不在其基础上进行相关处理的话,就无法实现数据的高质量传输。
正是因为有了数据链路层的流量控制,差错处理等功能,保证了数据在物理线路上的高质量传输,同时网络层也不需要关心物理层采用了哪些传输介质。
物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层确定与传输媒体的接口一些特性。
我们下面将采用自顶向下的方式讲述计算机网络的知识点。
由于篇幅较长,每个层我将用一篇文章来讲解。
01.应用层
02.运输层
03.网络层
04.数据链路层
05.物理层
06.计算机网络概述
计算机网络概述(让你轻松了解网络)
参考文献:
计算机网络第7版(谢希仁)
计算机网络自顶向下
b站:韩立刚版(计算机网络)
b站:王道考研(计算机网络)