day28 网络编程
Posted fxc-520520
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day28 网络编程相关的知识,希望对你有一定的参考价值。
一,客户端/服务端架构
C/S B/S
1,硬件c/s架构(打印机)
2,软件c/s架构:
互联网中处处是c/s架构
(B/S架构也是C/S架构的一种) 如你的浏览器是客户端,博客园网站是服务端。
比如,腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看到它的视频。
client《-------基于网络通信----------》server
browser<--------基于网络通信---------->server
3.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个,一个一个的建立连接,出来一个再进去一个。
注意:
半连接池限制的是同一时间的请求数,而非连接数。
以上是关于day28 网络编程的主要内容,如果未能解决你的问题,请参考以下文章