美文网首页计算机网络学习IT与工作编程学习
这是一份详细 & 清晰的计算机网络基础 学习指南

这是一份详细 & 清晰的计算机网络基础 学习指南

作者: Carson带你学安卓 | 来源:发表于2018-02-28 08:19 被阅读8109次

    前言

    • 计算机网络基础 该是程序猿需掌握的知识,但往往会被忽略
    • 今天,我将献上一份详细 & 清晰的计算机网络基础 学习指南,涵盖 TCP / UDP协议、Http协议、Socket等,希望你们会喜欢。

    目录

    示意图

    1. 计算机网络体系结构

    1.1 简介

    • 定义
      计算机网络的各层 + 其协议的集合
    • 作用
      定义该计算机网络的所能完成的功能

    1.2 结构介绍

    • 计算机网络体系结构分为3种:OSI体系结构、TCP / IP体系结构、五层体系结构
    • OSI体系结构:概念清楚 & 理念完整,但复杂 & 不实用
    • TCP / IP体系结构:含了一系列构成互联网基础的网络协议,是Internet的核心协议 & 被广泛应用于局域网 和 广域网
    • 五层体系结构:融合了OSITCP / IP的体系结构,目的是为了学习 & 讲解计算机原理
    示意图

    低三层为通信子网,负责数据传输
    高三层为资源子网,相当于计算机系统,完成数据处理;
    传输层承上启下

    • TCP / IP的体系结构详细介绍
      由于 TCP / IP体系结构较为广泛,故主要讲解
    示意图 示意图
    • OSI的体系结构详细介绍
    示意图 示意图

    2. TCP协议

    Transmission Control Protocol,即 传输控制协议

    1. 属于 传输层通信协议
    2. 基于TCP的应用层协议有HTTPSMTPFTPTelnetPOP3

    关于TCP的其他知识:如三次握手、四次挥手、无差错控制原理等,具体请看文章:计算机网络:这是一份全面 & 详细 的TCP协议攻略


    3. UDP协议

    3.1 定义

    User Datagram Protocol,即 用户数据报协议

    1. 属于 传输层通信协议
    2. 基于UDP的应用层协议有 TFTPSNMPDNS

    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)
    示意图
    1. Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输)
    2. 即:通过Socket,我们才能在Andorid平台上通过 TCP/IP协议进行开发
    3. 对用户来说,只需调用Socket去组织数据,以符合指定的协议,即可通信
    • 成对出现,一对套接字:
    Socket ={(IP地址1:PORT端口号),(IP地址2:PORT端口号)}
    
    • 一个 Socket 实例 唯一代表一个主机上的一个应用程序的通信链路

    5.2 其他知识

    关于Socket的原理、机制过程 & 使用方式,具体请看文章:Android:这是一份很详细的Socket使用攻略


    6. 其他知识

    6.1 在浏览器中输入url地址 ->> 显示主页的过程

    打开一个网页,整个过程会使用哪些协议

    示意图

    6.2 IP地址(IPv4地址)

    • 定义
      连接在Internet中的每一台主机(或 路由器)的全球唯一的标识符

    • 组成
      IP地址 = 32位 = 网络号 + 主机号;即IP地址::={<网络号>,<主机号>}

    其中:

    1. 网络号:标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。
    2. 主机号:标志该主机(或路由器)。一个主机号在它面前的网络号所指明的网络范围必须是唯一的。

    不同类型的IP地址,其主机号 & 网络号所占字节数不同;故:一个IP地址在整个网络范围内是唯一的

    • 分类
      传统的IP地址是分类的地址,分为A,B,C,D,E五类

    区别在于网络号 & 主机号占的字节数不同

    示意图
    • 特别注意:在各类IP地址中,有一些IP地址用于特殊用途,不能用于做主机IP地址
    示意图

    6.3 ICMP协议

    • 定义
      Internet Control Message Protocol,即 网际控制报文协议
    1. 属于IP层协议
    2. 注:ICMP报文不是高层协议,而是作为IP层数据报的数据,加上数据报首部,组成IP数据报发出去
    • 作用
      更有效地转发IP数据包 & 提高交付成功的机会

    同时允许主机 / 路由器报告差错 & 异常情况

    • 分类
      ICMP差错报告报文 & ICMP询问报文

    • 主要应用
      PING(分组网间探测)、Traceroute(跟踪1个分组从源点到终点的路径,原理 = 从源主机向目的主机发送一连串的IP数据报)

    下面,将主要介绍Ping的过程

    6.4 Ping的过程

    • 定义
      Packet InterNet Groper,即分组网间探测
    1. ICMP报文的1个重要应用:使用了IPCM回送请求 & 回送回答报文
    1. 是应用层直接使用网络层ICMP的1个例子,无经过传输层的TCP、UDP
    • 作用
      测试2个主机的连通性

    • 原理

      1. 向目的主机发送多个ICMP回送请求报文
      2. 根据 目的主机返回的ICMP回送回答报文中的时间戳,从而计算出往返时间
      3. 最终显示的结果:发送到目的主机的IP地址、发送 & 收到 & 丢失的分组数、往返时间的最小、最大 & 平均值
    • 过程
      假设有两台主机:
      (目的主机)PC1:IP = 192.168.1.1
      (源主机)PC2:IP = 192.168.1.2

    示意图

    6.5 路由器与交换机的区别

    示意图

    6.6 Cookie 与 Session

    • 简介
    示意图
    • 区别 & 对比
    示意图

    6.7 Cookie 与 Token

    • 简介
    示意图
    • 基于Cookie的身份验证 & 验证流程
    示意图 示意图
    • 基于Token的身份验证 & 验证流程
    示意图 示意图

    7. 总结

    • 本文全面讲解了 开发的基础知识:计算机网络

    • 下面我将继续讲解 编程开发的基础知识,有兴趣可以继续关注Carson_Ho的开发笔记


    请点赞!因为你的鼓励是我写作的最大动力!

    相关文章阅读
    Android开发:最全面、最易懂的Android屏幕适配解决方案
    Android事件分发机制详解:史上最全面、最易懂
    Android开发:史上最全的Android消息推送解决方案
    Android开发:最全面、最易懂的Webview详解
    Android开发:JSON简介及最全面解析方法!
    Android四大组件:Service服务史上最全面解析
    Android四大组件:BroadcastReceiver史上最全面解析


    欢迎关注Carson_Ho的简书!

    不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度

    相关文章

      网友评论

      • Jo_wsj:谢谢,收货良多:clap:
      • 逝水巟言:多谢大佬,收获良多!
      • 随心飞翔_58ca:写的不错👏👏👏
      • 我好方Plus:谢谢:pray:,学习了
      • ljwcode:多谢大佬,收获良多!
      • 大猫猴来了:崇拜大佬
      • 9d13dac0b326:大佬,那你有没有关于计算机网络相关知识的书籍或者文章或者资料的推荐呢?
      • 9d13dac0b326:讲真,你的RxJava系列是真的好 太喜欢你的文章了
      • 若末lan:捕获一只大佬,果断关注,虽然我只是一个小前端:smirk:
      • 叮宕:讲真,用python Scapy干点坏事,理解的比看这些要深
        叮宕:@z不羁的风 这篇博客写的不错http://blog.csdn.net/cj1112/article/details/51336383
        Eugene1024:干点啥坏事啊
      • 无名指666:文章结构真的清晰、好读,什么时候能像作者这么优秀!!!!!
      • 恒星人:tcp的链接没有

      本文标题:这是一份详细 & 清晰的计算机网络基础 学习指南

      本文链接:https://www.haomeiwen.com/subject/pgfzaxtx.html