一.客户端与服务端架构介绍
客户端与服务端实现通信
客户端将处理好的数据发给服务端,服务端把反馈好的数据再发回给客户端(客户端与服务端实现交互)
CS架构
跟CS相对应的还有一个BS架构 (浏览器和服务端软件)
为什么程序员要了解互联网通信协议?
程序员要写一个客户端和服务端的软件,两者实现基于网络通信,物理链接介质程序员不用管,但是协议需要管,
因为客户端产生数据后,照着某种协议的标准组织数据,然后把数据交给操作系统,操作系统帮我们调网络协议
,然后组织数据,然后调网卡,对方把数据解出来就可以了。
=================================================================================
服务端必须满足的要求:
1、稳定运行(网络、硬件、操作系统、服务端应用软件)对外一直提供服务
2、服务端必须绑定一个地址
什么是单点故障?
单点故障:某一个坏了另外一个顶
二.互联网协议
计算机与计算机之间必须有底层的物理连接介质,我们才能将计算机与计算机连接到一起进行网络通信
打电话(电话线连接,这是物理连接介质) 计算机(网线连接)
什么是互联网?
两大要素
1、底层的物理连接介质,是为通信铺好道路的
2、一套统一的通信标准,互联网通信协议
互联网协议就是计算机界的英语
网线(物理连接介质) 物理连接设备:光缆,电缆,双绞线,无线电波
物理层:负责发送电信号 (高低电频,人为的将高电频定为1,低电频定为0)(调网卡往外发)
由网卡发给对方的物理层
====================================================================================
数据链路层:要想把电信号对应出意义(例如:电信号010101) 需要进行分组操作,要想分组物理层干不了,要干这件事需要数据链路层来干这件事 一开始
各有各的标准,后来统一了标准,这套标准称之为以太网协议(ethernet)
一组电信号分为一个数据帧,或者叫一个数据包
任何一个数据包分为两大部分,称之为报头与数据部分(报头相当于信封,信封里面包的数据相当于里面的内容)
为什么要固定?
为了将数字建立有意义,能跟人的意思建立好对应关系
自定义协议:
任何一种通信协议必须包含两部分:
1、报头:必须是固定长度
2、数据
以太网协议规定但凡接入互联网的主机都必须有一块网卡称之为以太网卡
每一块网卡上必须有一个网址,这个网址就称之为mac地址
mac地址的组成
mac地址 发送端和接受端的地址称之为mac地址即网卡地址
以太网协议通信:采用最古老的方式,广播
广播风暴:交换机产生大量的广播
两台机器在一个局域网内以太网 (mac地址出不了广播域)
======================================================================================================
网络层
网络层有一个协议称之为IP协议
目前我们使用IP的版本是第四版本 称之为IPV4 ,目前我们正普及IPV6
IP这个协议规定 发送数据包分为两部分, 报头和数据与以太网一样。 IP协议的数据包用的是IP地址。以太网协议的数据包用的是以太网地址。
IP地址与子网掩码
两者都一样都是点分十进制
学IP地址的用处?
子网地址一样的情况下 子网地址(IP地址与子网掩码匹配出子网地址)
当主机分散在不同的局域网内,无法找到对方在哪,先要找到对方的局域网在哪里,单纯的IP地址标识不了还需要配套的子网掩码。然后得到子网地址
接着匹配子网地址。得到对方的子网地址和自己的子网地址地址是不是一样,如果一样就在一个局域网内,然后再用mac地址
子网地址不一样的情况下
我自己有子网地址,对方也有子网地址IP与子网掩码的按位与运算,找到对方在哪个小圆圈,再根据mac地址,就能找到对方在哪个小圆圈的地址
IP+mac地址就能标识世界上独一无二的计算机(基于网络通信的前提一定要有标识地址的方式)
=======================================================================================================
光计算机通信就完了吗 是客户端软件与服务端软件进行通信,不光要找到计算机,还要找到计算机上面的应用软件,IP地址搞定不了
每启动一个互联通信的程序都会对应一个端口1024-65535是自己的程序 0-1024是给操作系统预留的
传输层(TCP/UDP)
IP+mac+端口号(port)就能标识全世界独一无二的基于网络通信的应用软件(服务端不许换端口号,客户端可以换端口号)
========================================================================================================
应用层(跟应用软件有关)
http,ftp,mail (这些是通用的协议) 浏览器用的是http协议
如何用浏览器把对方主机上的内容下载到本地浏览的过程
上网的过程其实就是一个下载的过程。
应用层产生一个请求(数据),调本机的网卡,沿着网络发给对方的网卡,再让对方收到。应用程序交给操作系统,操作系统会包tcp的头,操作系统再包IP 头,再包以太网头。再把包打散形成0101的二进制,沿着网卡接着通过物理连接介质送给对方。接着交给对方的操作系统,然后进行解包的过程。
如何解呢?一层层解,物理层拆以太网协议头,再拆IP 头然后拆TCP头,露出应用层的数据然后交给服务端的应用软件来接受数据。
发数据事不断封包的过程,收数据事拆包的过程。
应用层以下的归操作系统管
应用层其实是发给操作系统,应用层只要把数据丢给操作系统就发完了,操作系统会照着协议自己运作就可以了。应用层的send是发给自己的操作系统
应用层的send是给自己的操作系统发的
浏览器与服务端的交互通过url
URL称之为统一资源定位符 在视频的 (1:23里解释) 用来标识全世界范围内独一无二的资源。再找到软件的基础上再加一层
URL地址建立在 IP地址mac地址及端口地址上的
http://应用层协议部分
www.cnblogs.com称之为域名
此处还省略了端口号:80 这是服务端的端口号 (所有浏览器自动填充的端口号是80)
/linhaifeng/article/62300称之为文件的路径
网站的本质就是把一丢有价值的数据传到机器之上,起了服务端软件,管理这台机器上的文件。
域名一定是对应ip地址的。但是通过浏览器访问网站的时候没有指定IP,如何通过域名拿到IP地址呢?
通过一台机器来拿到DNS服务器
DNS称之为域名解析服务端。(通过他来拿到IP地址)
总的分析:浏览器如何从无到有访问一个网页的内容的
首先接受用户的交互操作,产生一个URL地址,然后浏览器不着急发请求,把域名交给网卡上配的DNS,DNS会反馈一个IP地址,拿到IP地址访问IP和端口
然后找到对方的机器。然后浏览器与对方软件建好联系(两条道),按照http协议去封装。
互联网协议的补充(了解)
网络层和以太网协议 如何把包送给对方的
先要拿到对面的IP地址,接下来算自己的IP和自己的子网掩码算一个网络地址,别人的IP和别人的子网掩码算一个网络地址。发现这两个一样在一个局域网
交换机有一个mac地址学习的功能,可以避免重复发广播包的问题
ARP协议算对方IP和子网掩码跟我的IP和子网掩码一样?
对方跟我在一个子网内基于mac地址的广播
mac地址通信只能在局域网内
网关与网关走的是路由协议
一个局域网网关都一样
三次握手
客户端发请求,服务端就立马要求建连接
sy1=1这是一个请求包
ack=1代表确认的意思
seq=x 序列号,暗号
seq=x+1
一般都是写ack=1+x这里面有两层意思 第一层是确认信息的意思,第二层1+x是基于上一个请求而来的
seq=y这个包的序列号 服务端受到这个包下个连接也建成功了
为什么三次握手建连接中间两步可以并成一步呢?因为此时只是为了传真正数据铺路而已。铺路是为了客户端给服务端发数据,服务端给客户端回数据。
数据发完了丧失存在的意义。
四次挥手
数据发完了 客户端会请求服务端断掉上面的连接
fin=1代表断开连接
ack=1+x这里面有两层意思