网络概述

什么是网络
网络一般分2种 局域网和广域网

局域网
局部区域网络(local area network)通常简称为"局域网",缩写为LAN。局域网是结构复杂程度最低的计算机网络。局域网仅是在同一地点上经网络连在一起的一组计算机。局域网通常挨得很近,它是目前应用最广泛的一类网络。通常将具有如下特征的网称为局域网。

1)网络所覆盖的地理范围比较小。通常不超过几十公里,甚至只在一幢建筑或一个房间内。
2)延迟比较低
3)传输速度非常快
4)支持CSMA/CD

城域网MAN
介于 LAN和WAN之间的

广域网
广域网(wide area network, WAN )它是影响广泛的复杂网络系统。

WAN由两个以上的LAN构成,这些LAN间的连接可以穿越30mile以上的距离。大型的WAN可以由各大洲的许多LAN和MAN组成。最广为人知的WAN就是Internet,它由全球成千上万的LAN和WAN 组成。

有时LAN、MAN和WAN间的边界非常不明显,很难确定LAN在何处终止、MAN或WAN在何处开始。但是可以通过四种网络特性-通信介质、协议、拓扑以及私有网和公共网间的边界点来确定网络的类型。通信介质是指用来连接计算机和网络的电缆、光纤 电缆、无线电波或微波。通常LAN结束在通信介质改变的地方,如从基于电线的电缆转变为光纤。电线电缆的LAN通常通过光纤电缆与其他的LAN连接。

协议
约定俗成的东西就称之为协议

我们买东西用什么来交易啊

是不是用人民币 默认情况下就是人民币吧 那么是谁规定的 是不是国家规定了 这个就叫做协议 约定俗成的 不需要去问别人的情况下就知道该怎么做这就是一种协议

那么在计算机网络当中我们怎么通信 是不是也需要一个东西来规定一个规则来实现不同系统不同的设备之间的通信

我们就使用一种大家都认可的协议,那么计算机之前的通信协议就叫做TCP/IP协议

它是一种通用协议 不管你用什么设备 什么系统都是遵从这个协议

协议就是一种完成进程之间通信的一种规范

TCP/IP协议(族)
族的意思是 这里面有许多的协议 不是一个协议

在早期的计算机网络中,都是由各自的厂商自己规定一套协议,IBM,Apple和microsoft都有自己的网络协议互不兼容,为了把全世界所有的设备(计算机,手机,路由等等)都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite)就是通用协议标准
因为互联网协议中包含了非常多的协议标准,但是最重要的就是2个协议一个是TCP一个是IP协议,所以大家把互联网的协议简称TCP/IP协议

下图包含了常用的网络协议
在这里插入图片描述
大家看上图中由几个层次 比如应用层 传输层 网络层 网络接口层 这几个层是干什么用的 根据所用的功能不一样分了几个层

TCP协议有二种分法 一种是七层一种是4层
在这里插入图片描述

理论是7层 但是我们实际应用的时候一般是按4层来开发
这个内容经常会面试的时候提到请大家务必记住

端口
什么是端口

端口就好比是我们的手机号码 你要跟你女朋友联系是不是需要打她的手机号码,这个手机号码就相当于一个端口,那么你去打电话的时候,是不是你自己也需要一个手机号码才可以打电话啊,我们是不是找特定的人给特定的人打电话啊

我们回到应用程序
在这里插入图片描述
在linux系统中,端口可以有65535(2的16次方)个

既然有这么多,操作系统为了统一管理,所以进行了编号这就是端口号

端口号
端口是通过端口号来标记的,端口号只有整数,范围是从0到65535

端口是怎样分配的
按端口号可分为3大类:

(1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
公认端口就是非常出名的端口好比,大家都知道110,119,120是干什么用的,公认端口也是一样的,它是一些非常出名的服务的端口

比如我们在访问www.baidu.com的时候,默认访问的就是80端口

(2)注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。

(3)动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。

总结
端口区分程序
pid只能在一台机器上面区分进程
怎么区分不同服务器的端口 是 ip+端口来区分
需要连接的端口是固定的,但是连接段会随即生成一个端口

IP地址
ip地址是什么
地址是用来标识位置的
在逻辑上标记一台唯一的电脑
在这里插入图片描述
ip地址分类
在这里插入图片描述
192.168.1.1 4组数字 4个字节 1个字节8个比特位
A类地址 192 __ __ __ 前1个不可变 后面3个可变
B类地址 192.168.__ __ 前2个不可变 最后2个可变
C类地址 192.168.1__ 前3个不可变 最后1个可变
那么我们地址最大的长度是多少
192.168.1. 1-254 2^8 有2个地址需要注意 一个是0 192.168.1.0 是你的网络号
192.168.1.255 是广播地址 最小的和最大的不让用 1也不让用 因为1是网关
1~254
同一个网段 就在一个局域网 不允许出现2个ip地址一模一样 回出现ip冲突
为什么要划分ABC类地址
254个地址够了
如果是大公司类 比如阿里 几万个员工 那么我地址就不够了
B类有多少个地址 2^16次方 64435

在很早的时候美国的科学家就已经意识到IP地址不够用了,所以出了一个技术叫做私有网络 也就是通过net协议来上网,到后来IP地址已经被瓜分玩了,每个国家都定义好了,这个IP给你 别人就不能用了、
如果以后非洲的小伙伴也要用怎么办,在2001年就提出了ipv6的概念 在ipv6的宣传图上有这么一句话
地球上的每一粒沙子都有一个ip地址

A类地址
A类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络掩码为:255.0.0.0;A类地址分配给规模特别大的网络使用。A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络。例如IBM公司的网络。

B类地址
B类地址的表示范围为:128.0.0.0~191.255.255.255,默认网络掩码为:255.255.0.0;B类地址分配给一般的中型网络。B类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址。

C类地址
C类地址的表示范围为:192.0.0.0~223.255.255.255,默认网络掩码为:255.255.255.0;C类地址分配给小型网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。C类网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址。

实际上,还存在着D类地址和E类地址。但这两类地址用途比较特殊,在这里只是简单介绍一下:D类地址称为多播地址(一般用于视频会议)某些人能看,某些人不能看,供特殊协议向选定的节点发送信息时用。E类地址保留给将来使用。

私有ip
在这么多网络IP中,国际规定有一部分IP用于我们的局域网使用,也就是私网地址,它们的范围是:

10.0.0.0~10.255.255.255
172.16.0.0~172,31.255.255
192.168.0.0~192.168.255.255

特殊ip
127.0.0.1 测试网卡的

socket(套接字)简介
本地的进程间通信有很多方式 列如
队列
同步

以上通信方式都是在一台机器上不同进程之间的通信方式,那么网络当中的进程之间怎么通信

网络中进程之间如何通信
首先要解决的问题是如果唯一标识一个进程,如果没有唯一标识符 就不能通信

在本地可以通过进程管理 pid来唯一标识一个进程,但是在网络中行不通

其实TCP/IP协议已经帮我们解决了这个问题,在网络层中的’IP地址’就是可以唯一标识网络中主机的,而传输层加了’协议+端口’ 来识别主机中应用程序(进程)

这样我们就可以听过 ip地址+协议+端口,就可以标识网络的进程了,网络中的进程通信就可以利用这个标识于其他进程进行交互

什么是socket
socket是进程间通信的一种方式,它于其他进程间通信的主要一个不同是:

它可以实现不同主机间的进程通信,我们网络上大部分的服务都是基于socket来完成的

列如我们每天浏览网页,qq聊天,微信聊天,email等等

更多干货内容,欢迎关注公众号:知了python