1.学习网络编程的目标
编写一个C/S架构的软件
C/S: Client(客户端)--------基于网络----------Server(服务端)
B/S: Browser(浏览器)-------基于网络----------Server(服务端)
2. 服务端需要遵循的原则:
- 服务端与客户端都需要有唯一的地址,但是服务端的地址必须固定/绑定
- 对外一直提供服务,稳定运行
- 服务端应该支持并发
3.网路
网络建立的目的是为数据交互(通信)
如何实现通信:
1. 建立好底层的物理连接介质
2. 有一套统一的通信标准,称之为互联网协议
4. 互联网协议:就是计算机界的英语
OSI七层协议:我们将应用层,表示层,会话层归类于应用层
ip+mac可以标识全世界范围内独一无二的一台计算机的位置
port可以标识一台计算机之上唯一的一个基于网络通信的应用软件
ip+mac+port:可以标识全世界范围内独一无二的一个应用软件(基于网络通信)
5.五层模型详解
我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议
就理解了整个互联网通信的原理。
首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解
每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件
5.1 物理层
连接两台计算机的物理介质:光缆,电缆,双绞线,无线电波
将一堆二进制数字转化为电流,高电频代表1,低电频代表0
5.2 数据链路层
单纯的一堆0和1是没有意义的,必须规定多少位为一组,代表什么意思
早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet
ethernet规定
- 一组电信号构成一个数据包,叫做‘帧’
- 每一数据帧分成:报头head和数据data两部分
head(固定18字节) | date(最短46字节,最长1500字节) |
---|
head包含三部分,一共18字节:
-----发送者源地址(6字节)
-----接收者源地址(6字节)
-----数据类型(6字节)
data包含:(最短46字节,最长1500字节)
----数据包的具体内容
:
mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)
ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼
5.3 网络层
网络层由来:有了ethernet、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,问题是世界范围的互联网是由
一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,
这就不仅仅是效率低的问题了,这会是一种灾难
上图结论:必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是,
就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关
网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址
规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
范围0.0.0.0-255.255.255.255
一个ip地址通常写成四段十进制数,例:172.16.10.1
通过对方主机IP获取对方mac地址
一:首先通过ip地址和子网掩码区分出自己所处的子网
场景 | 数据包地址 |
---|---|
同一子网 | 目标主机mac,目标主机ip |
不同子网 | 网关mac,目标主机ip |
原理介绍:
将对方mac地址填入FF:FF:FF:FF:FF:FF,正确的IP填入,对方收到后发现是自己的包,再看见12个F后知道这是找自己要mac地址,然会就会把自己的mac地址返回出去
5.4 传输层
传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,
那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。
传输层功能:建立端口到端口的通信
补充:端口范围0-65535,0-1023为系统占用端口
跑tcp协议与udp协议