正文
前言
-
计算机网络基础 该是程序猿需掌握的知识,但往往会被忽略
-
今天,我将献上一份详细 & 清晰的计算机网络基础 学习指南,涵盖
TCP / UDP
协议、
Http
协议、
Socket
等,希望你们会喜欢。
目录
示意图
1. 计算机网络体系结构
1.1 简介
-
定义
计算机网络的各层 + 其协议的集合
-
作用
定义该计算机网络的所能完成的功能
1.2 结构介绍
-
计算机网络体系结构分为3种:
OSI
体系结构、
TCP
/
IP
体系结构、五层体系结构
-
OSI
体系结构:概念清楚 & 理念完整,但复杂 & 不实用
-
TCP
/
IP
体系结构:含了一系列构成互联网基础的网络协议,是
Internet
的核心协议 & 被广泛应用于局域网 和 广域网
-
五层体系结构:融合了
OSI
与
TCP
/
IP
的体系结构,目的是为了学习 & 讲解计算机原理
示意图
低三层为通信子网,负责数据传输
高三层为资源子网,相当于计算机系统,完成数据处理;
传输层承上启下
-
TCP
/
IP
的体系结构详细介绍
由于
TCP
/
IP
体系结构较为广泛,故主要讲解
示意图
示意图
示意图
示意图
2. TCP协议
Transmission Control Protocol
,即 传输控制协议
-
属于 传输层通信协议
-
基于
TCP
的应用层协议有
HTTP
、
SMTP
、
FTP
、
Telnet
和
POP3
关于
TCP
的其他知识:如三次握手、四次挥手、无差错控制原理等,具体请看文章:
计算机网络:这是一份全面 & 详细 的TCP协议攻略
3. UDP协议
3.1 定义
User Datagram Protocol
,即 用户数据报协议
-
属于 传输层通信协议
-
基于
UDP
的应用层协议有
TFTP
、
SNMP
与
DNS
3.2 特点
无连接的、不可靠的、面向报文、无拥塞控制,具体介绍如下:
示意图
3.3 优缺点
-
优点:速度快
-
缺点:消息易丢失(特别是 网络较差时)
3.4 应用场景(对应应用层协议)
要求通信速度高
如:
域名转换:
DNS
协议
文件传输:
FTP
协议
网络管理:
SNMP
协议
远程文件服务器:
NFS
协议
3.5 报文段格式
-
UDP的报文段共有2个字段:数据字段 & 首部字段
-
下面主要介绍首部(8字节、4个字段)
示意图
示意图
3.6 TCP、UDP协议的区别
示意图
4. HTTP协议
5. Socket
5.1 简介
-
即套接字,
是应用层 与
TCP/IP
协议族通信的中间软件抽象层,表现为一个封装了 TCP / IP协议族 的编程接口(API)
示意图
-
Socket
不是一种协议,而是一个编程调用接口(
API
),属于传输层(主要解决数据如何在网络中传输)
-
即:通过
Socket
,我们才能在Andorid平台上通过
TCP/IP
协议进行开发
-
对用户来说,只需调用Socket去组织数据,以符合指定的协议,即可通信
Socket ={(IP地址1:PORT端口号),(IP地址2:PORT端口号)}
-
一个
Socket
实例 唯一代表一个主机上的一个应用程序的通信链路
5.2 其他知识
关于
Socket
的原理、机制过程 & 使用方式,具体请看文章:
Android:这是一份很详细的Socket使用攻略
6. 其他知识
6.1 在浏览器中输入
url
地址 ->> 显示主页的过程
打开一个网页,整个过程会使用哪些协议
示意图
6.2 IP地址(IPv4地址)
其中:
-
网络号:标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。
-
主机号:标志该主机(或路由器)。一个主机号在它面前的网络号所指明的网络范围必须是唯一的。
不同类型的IP地址,其主机号 & 网络号所占字节数不同;
故:一个IP地址在整个网络范围内是唯一的
-
分类
传统的IP地址是分类的地址,分为A,B,C,D,E五类
区别在于网络号 & 主机号占的字节数不同
示意图
-
特别注意:在各类IP地址中,有一些IP地址用于特殊用途,不能用于做主机IP地址
示意图
6.3 ICMP协议
-
定义
Internet Control Message Protocol
,即 网际控制报文协议
-
属于IP层协议
-
注:ICMP报文不是高层协议,而是作为IP层数据报的数据,加上数据报首部,组成IP数据报发出去
-
作用
更有效地转发IP数据包 & 提高交付成功的机会
同时允许主机 / 路由器报告差错 & 异常情况
下面,将主要介绍
Ping
的过程
6.4 Ping的过程
-
定义
Packet InterNet Groper
,即分组网间探测
-
是
ICMP
报文的1个重要应用:使用了IPCM回送请求 & 回送回答报文
-
是应用层直接使用网络层ICMP的1个例子,无经过传输层的TCP、UDP