一.客户端与服务端架构介绍程序员
客户端与服务端实现通讯浏览器
客户端将处理好的数据发给服务端,服务端把反馈好的数据再发回给客户端(客户端与服务端实现交互) 服务器
CS架构网络
跟CS相对应的还有一个BS架构 (浏览器和服务端软件)架构
为何程序员要了解互联网通讯协议?tcp
程序员要写一个客户端和服务端的软件,二者实现基于网络通讯,物理连接介质程序员不用管,可是协议须要管,学习
由于客户端产生数据后,照着某种协议的标准组织数据,而后把数据交给操做系统,操做系统帮咱们调网络协议网站
,而后组织数据,而后调网卡,对方把数据解出来就能够了。url
=================================================================================操作系统
服务端必须知足的要求:
一、稳定运行(网络、硬件、操做系统、服务端应用软件)对外一直提供服务
二、服务端必须绑定一个地址
什么是单点故障?
单点故障:某一个坏了另一个顶
二.互联网协议
计算机与计算机之间必须有底层的物理链接介质,咱们才能将计算机与计算机链接到一块儿进行网络通讯
打电话(电话线链接,这是物理链接介质) 计算机(网线链接)
什么是互联网?
两大要素
一、底层的物理链接介质,是为通讯铺好道路的
二、一套统一的通讯标准,互联网通讯协议
互联网协议就是计算机界的英语
网线(物理链接介质) 物理链接设备:光缆,电缆,双绞线,无线电波
物理层:负责发送电信号 (高低电频,人为的将高电频定为1,低电频定为0)(调网卡往外发)
由网卡发给对方的物理层
====================================================================================
数据链路层:要想把电信号对应出意义(例如:电信号010101) 须要进行分组操做,要想分组物理层干不了,要干这件事须要数据链路层来干这件事 一开始
各有各的标准,后来统一了标准,这套标准称之为以太网协议(ethernet)
一组电信号分为一个数据帧,或者叫一个数据包
任何一个数据包分为两大部分,称之为报头与数据部分(报头至关于信封,信封里面包的数据至关于里面的内容)
为何要固定?
为了将数字创建有意义,能跟人的意思创建好对应关系
自定义协议:
任何一种通讯协议必须包含两部分:
一、报头:必须是固定长度
二、数据
以太网协议规定但凡接入互联网的主机都必须有一块网卡称之为以太网卡
每一块网卡上必须有一个网址,这个网址就称之为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这里面有两层意思