day28 网络编程

 

一,客户端/服务端架构浏览器

C/S        B/S网络

1,硬件c/s架构(打印机)架构

2,软件c/s架构:tcp

互联网中到处是c/s架构网站

(B/S架构也是C/S架构的一种) 如你的浏览器是客户端,博客园网站是服务端。url

好比,腾讯做为服务端为你提供视频,你得下个腾讯视频客户端才能看到它的视频。操作系统

 

client《-------基于网络通讯----------》server3d

browser<--------基于网络通讯---------->server视频

3.server端必须知足的条件:server

    1.稳定运行(网络,硬件,操做系统,服务端应用软件),对外一直提供服务。

     2.服务端必须绑定一个固定的地址。

二,什么是互联网?

   互联网的核心就是由一堆协议组成,协议就是标准,好比全世界人通讯的标准是英语。

   若是把计算机比做人,互联网协议就是计算机界的英语。全部的计算机都学会了互联网协议,那全部的计算机都

   就能够按照统一的标准去收发信息从而完成通讯了。

互联网两大要素:

1.底层的物理链接介质,是为通讯铺好道路的。

2.一套统一的通讯标准------》互联网通讯协议

三,网络通讯原理

   3.1 互联网的本质就是一系列的网络协议

   一台硬设有了操做系统,而后装上软件就能够正常使用了,然而你也只能本身使用。像这样,每一个人都拥有一台本身    的机器,然而彼此孤立。

 

结论:

英语称为世界上全部人通讯的统一标准,若是把计算机当作分布于世界各地的人,那么链接两台计算机之间的internet实际上就是一系列统一的标准,这些标准称为互联网协议。互联网的本质就是一系列的协议。

 

3.2 自定义协议:

任何一种协议都包含两部分:

1,报头:必须是固定长度。

2,数据

 

 

3.3  osi七层协议

 互联网协议按照功能不一样分为tcp/ip五层:

 

首先,用户感知到的只是最上面的一层应用层,自上而下每层都依赖于下一层。

每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件。

1.物理层:

孤立的计算机想要一块儿玩,必须接入internet,言外之意是计算机必须完成组网。

 

 物理层功能:

主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0.

 

2.数据链路层

数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思。

数据链路层的功能:定义了电信号的分组方式。

以太网协议:

早期的时候各个公司都有本身的分组方式,后来造成了统一的标准,即以太网协议ethernet

ethernet规定:

一组电信号组成一个数据报,叫作‘帧’

每个数据报分红:报头和数据两部分。

把数据报比做咱们平时寄信的话,报头至关于信封,能够看到是给谁的,数据至关于里面的信件。

总结:

任何一种通讯协议都必须包含两部分:

一部分:报头(必须是固定的长度)

二部分:数据

 

mac地址:

报头中包含的源地址和目标地址由来:以太网规定接入inernet的设备都必须具有网卡,发送端和接收端的地址即是指网卡的地址,即mac地址。

广播:

有了mac地址,同一网络内的两台主机就能够通讯了(一台主机经过arp协议获取另一台主机的mac地址)

ethernet采用最原始的方式,广播的方式进行通讯,即计算机通讯基本靠吼

 

3.网络层

网络层由来:有了ethernet、mac地址、广播的发送方式,世界上的计算机就能够彼此通讯了,问题是世界范围的互联网是由

一个个彼此隔离的小的局域网组成的,那么若是全部的通讯都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,

这就不只仅是效率低的问题了,这会是一种灾难

上图结论:必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,若是是就采用广播的方式发送,若是不是,

就采用路由的方式(向不一样广播域/子网分发数据包),mac地址是没法区分的,它只跟厂商有关

网络层功能:引入一套新的地址用来区分不一样的广播域/子网,这套地址即网络地址

 

ip地址:

规定的网络地址的协议叫作ip协议,它定义的地址称之为ip地址;普遍采用的ipv4.

子网掩码:

所谓”子网掩码”,就是表示子网络特征的一个参数。再形式上等同于ip地址。

 

算出子网地址:

知道”子网掩码”,咱们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,不然为0),而后比较结果是否相同,若是是的话,就代表它们在同一个子网络中,不然就不是。

 

总结:标识地址的方式:

     ip+mac地址就能标识全世界范围内独一无二的一台计算机。

     ip+mac+port就能标识全世界范围内独一无二的一个基于网络通讯的应用软件。

     url地址:标识全世界范围内独一无二的一个资源。

  注意:

 url地址=应用层协议部分(http://)+域名部分和端口部分(即对应对方的网站)+路径。

 

ARP协议:

ARP协议由来:

计算机通讯基本靠吼,即广播的方式,全部上层的包到最后都要封装上以太网头,而后经过以太网协议发送,在谈及以太网协议时候,我门了解到

通讯是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就须要经过arp协议

 

ARP协议功能:广播的方式发送数据包,获取目标主机的mac地址。

1.若是处在同一子网中时:

 

 上图中:pc1做为源mac,向同一子网里的主机以广播的方式发送数据包,在广播的时候有几个主机就复制几份进行发送。而后各个主机接收后拆开包,若是发现里面的ip是本身的,就返回本身的mac地址,上图中pc2发现是本身的,就返回了本身的mac.

2.若是处于不一样的子网中时:

源mac--网管的mac---目标网管的mac----目标ip(解析出目标mac)

 

4.传输层:

传输层的由来:网络层的ip帮咱们区分子网,以太网层的mac帮咱们找到主机,而后你们使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,

那么咱们经过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。

 

传输层的功能:

创建端口到端口的通讯。

 

重点:

   tcp协议。(三次握手,四次挥手)

           三次握手创建链接:

 

 以上是三次握手链接:syn是创建链接的意思。

第一步:客户端发送 请求包(syn=1)和序列号(seq=x)到服务端。

第二步:服务端经过序列号和请求包 确认请求(ack=1+x),同时向客户端发出请求包(syn=1)和序列号(seq=y)

第三步:客户端确认请求包(ack=1+y)

以上 syn_sent是发完,listen是等待。syn_rcvd是接受,established已经创建一个单项链接,established已经创建一个单项链接

 

四次挥手(断开链接):

 

为何有四次挥手,是由于中间关系到数据传输的问题,当数据没有传完的时候,须要等待一下,确认对方收到数据后,才能释放掉链接

断开链接的时候,通常是服务端发起的。由于服务端要接其余的客户端。

第一步:服务端先发起断开请求(fin)和序列号(seq)

第二步:客户端确认请求(ack)

第三步:客户端发起断开请求(fin)

第四部:服务端确认断开请求(ack)

 

udp协议:

又称为‘不可靠传输’

udp协议不用建链接

优势:效率高,不用等待

缺点:是不等待就直接释放掉数据内存,若是对方数据还没接收完,容易丢失数据

 

五,半链接池:

半链接池占的是内存空间,里面存的是创建链接请求数。先进先出。

假如半链接池最大为5,若是有6个主机同一时间进行访问请求,那么里面先一块儿放5个,一个一个的创建链接,出来一个再进去一个。

注意:

半链接池限制的是同一时间的请求数,而非链接数。

相关文章
相关标签/搜索