一个程序猿想要成为一个编程高手浪迹江湖,那必须练就一身夯实的基本功,没有扎实的基本功,后面就很难打通任督二脉,成为真正的武林高手。
计算机网络
计算机网络是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统互联起来,以功能完善的网络软件(网络通信协议、信息交换方式及网络操作系统等)实现网络中资源共享和信息传递的系统。它的功能主要表现在两个方面:一是实现资源共享(包括硬件资源和软件资源的共享);二是在用户之间交换信息。
简单的说就是将很多很多台电脑通过网线连接起来,形成一个通信网络,最后所有的电脑之间可以实现信息交换,资源共享。
网络的种类
按覆盖的地理范围的大小,计算机网络一般分为广域网(WAN)、城域网(MAN)和局域网(LAN)。其中,局域网是指在一个较小地理范围内的各种计算机网络设备互联在一起的通信网络,可以包含一个或多个子网,通常局限在几千米的范围之内。
第一种:局域网,只在小范围的网络,比如说一个网吧里面,一个机房,家里面的。都是局域网,局域网使用双绞线(就是网线)来进行连接。
第二种:城域网,在城市范围的网络,比如一个高校的几个校区,需要连接在一起,就是城域网,城域网使用光纤进行连接。
第三种:广域网,在国家之间的网络,比如中国,美国,韩国,之间的网络连接在一起,就是广域网,广域网使用海底光缆进行连接。
还有一种网络,就是因特网(Internet),是一组全球信息资源的总汇。由许多的局域网,城域网,广域网,通过路由器互相连接而成,它是一个信息资源和资源共享的集合。也就是通常我们说的能不能上网,有没有连网,就是指的有没有连上因特网。连接上了因特网,就可以通过网址访问因特网上的所有资源。
网络协议
网络协议是对数据格式和计算机之间交换数据时必须遵守的规则的正式描述,它的作用相当于人类的语言。网络协议由语义、语法、时序三个要素组成。人们形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。
我自己的理解是网络协议有点像以前的谍报人员接头暗号,见面的双方互相不认识,只能通过暗号来确认对方的身份,比如 A 和 B 两位特工见面之前已经约定好了接头暗号 , A 问 先生需要买份报纸吗? B 答 有上个月的报纸吗? A 说 有的,在我家里,先生需要的话就和我一起去家里拿吧,此时两个人已经通过暗语确定了对方的身份是自己人。
今天主要讲解 TCP/IP协议
TCP/IP五层协议
物理层,数据链路层,网络层,传输层,应用层
**物理层**
该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输 翻译成白话文就是说 物理层实际上就是通过网线或者光纤将电脑连接起来,组成网络实现通信。
**数据链路层**
数据链路层主要是在局域网范围内实现数据传输,在局域网内通过以太网协议传输信息的形式
以太网协议主要内容由几部分组成
- 每台电脑都有一块网卡,网卡有自己的mac地址,全世界范围内每块网卡的mac地址是不同的,也就是说每块网卡的地址是唯一的
- 局域网内各电脑通过交换机连接组成局域网
- 每台电脑都会保存局域网内所有电脑的mac地址
- 当局域网内一台电脑要发送消息给局域网内另外一台电脑时,需要在消息头部信息中写明目标电脑的mac地址,并在局域网内进行广播,每台电脑收到广播消息后根据消息头部信息中的mac地址判断是否是发给自己的
**网络层**
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。
网络层主要是通过IP协议将消息发送至目标电脑
从IP:192.168.0.3 发送消息到ip:192.168.2.5
目标地址192.168.2.5 与 子网掩码255.255.255.1 与运算后,判断和 192.168.0.3不在一个局域网内
192.168.0.3 封装数据包并广播给路由器A,路由器A判断 192.168.2.5 是否在局域网B内,得知不在局域网B
将消息发送至路由器B,路由器B判断 目标地址192.168.2.5 为局域网C中的地址,广播消息只局域网C
最终 IP 192.168.2.5 收到 hello word 消息
**传输层**
第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。 传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。 网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。
传输层主要是TCP协议,两台机器建立连接后,根据端口号确定是由哪个程序来接受消息。
**应用层**
应用层是建立在传输层之上,客户端和服务端定义的数据格式
- 每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。
- 应用层的许多协议都是基于客户服务器方式。
HTTP 协议就是建立在应用层的协议