一.计算机网络背景

先看看网络的发展

首先先是独立模式: 计算机之间相互独立;
也就是每个计算机之间相互独立,各个终端各自持有自己的客户端数据。

然后是网络互联
即多台计算机通过网络连在一起,完成数据共享。

局域网LAN
即计算机数量更加庞大,就通过交换机和路由器连在一起。

广域网WAN
即将远隔千里之外的计算机相连接。

注:所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域网

二.认识“协议”

就像各个国家签署的各个协议一样,既然你签署了协议,你就要按照约定办事。
协议就是一种“约定”

计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信息,就需要约定好双方的数据格式

三.网络协议初识

协议是分层的结构,我们先来了解一下协议分层

如下图:


在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次.

分层最大的好处在于 “封装” . 面向对象例子

OSI七层模型

  1. OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;

  2. 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;

  3. OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

  4. 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;

  5. 但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解

OSI七层协议结构示意图如下:

TCP/IP五层(或四层)协议:

  1. TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.

  2. TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

  • 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.

  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层

示意图如下:

注:物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型

一般而言

  • 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
  • 对于一台路由器, 它实现了从网络层到物理层;
  • 对于一台交换机, 它实现了从数据链路层到物理层
  • 对于集线器, 它只实现了物理层;

注:但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);

三.网络传输基本流程

网络传输流程图:
同一个网段内,两台主机进行文件传输:

TCP/IP通讯过程:

程序员必备网络基础知识清单,简单易懂相关推荐

  1. 程序员必备计算机基础知识总结电子书下载

    程序员必备计算机基础知识总结电子书下载 日常 9分钟前 2阅读0点赞0评论 给大家推荐一本超级经典的计算机基础知识的书! 这本书主要是程序员必知的硬核基础知识,非常经典的入门书籍,小编吧内容看了适合看 ...

  2. 计算机中央处理器相关知识,软考程序员考点计算机硬件基础知识之中央处理器CPU...

    下面希赛小编为大家整理的软考程序员考点计算机硬件基础知识之中央处理器CPU,希望能帮助学友们.具体内容如下: 中央处理器 中央处理器(CPU,Central Processing Unit)是一块超大 ...

  3. Paddle_程序员必备的数学知识_转发

    程序员--必备数学知识 !!!Attention 本博客转发至百度aistudio的<深度学习7日入门-cv疫情检测>,课程非常棒!本人力推! 博客转发地址:https://aistudi ...

  4. 黑马程序员_JAVA相关基础知识

    ------- android培训.java培训.期待与您交流! -------- JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便 ...

  5. 面向程序员的网络基本知识 - 网络模型及网络设备

    Github 本系列文章旨在向程序员分享一些网络基本知识,让程序员具备基本的网络常识,以便与网络工程师沟通.本系列文章不会涉及如何配置交换机.路由器等网络设备的内容,所以不适合想考CCNA/HCNA证 ...

  6. 黑马程序员 JAVA相关基础知识

    1.面向对象的语言特征 封装.继承.多态 2.Java I/O中字符流和字节流的区别 字节流是传递0~255的整数而Java中有一些(如unicode代码)不能使用字符流,是特殊的字节流, 3.Has ...

  7. java高级内容_Java高级程序员必备的内容知识

    一段时间没有回顾多线程相关知识了,虽然工作中会用到一些多线程的内容,但都偏向于基础,今天java培训带大家重读多线程相关内容,发现有些东西还是需要注意下.这些一般是面试高频问题奥. 了解并发的内幕是一 ...

  8. 程序员必备的量子力学知识

    兄dei,你相信"平行宇宙"吗?你相信"时间旅行"吗?这两个高大上的词经常出现在科幻作品中,为观众打开一个又一个脑洞."平行宇宙".&quo ...

  9. 程序员笔试面试基础知识资料整理

    1. 数据结构与算法 1.1 书籍 (1)算法导论 (2)编程之美 (3)编程珠玑 (4)数据结构(C语言版) (5)CareerCup.Cracking.the.Technical.Intervie ...

  10. Uni-App从入门到实战-黑马程序员【uniapp基础知识讲义笔记】

    想要课程资料的同学可以留言,留下你的邮箱哦 ####uni-app的基本使用 课程介绍: 基础部分: 环境搭建 页面外观配置 数据绑定 uni-app的生命周期 组件的使用 uni-app中样式学习 ...

最新文章

  1. 【工具软件】webstorm如何使用快捷键生成固定代码
  2. 技术图文:Python魔法方法之属性访问详解
  3. idea配置Maven的坑
  4. 一起ORACLE数据库中数据查询结果不一致问题的排查过程
  5. 点阵大屏语音感应时计——人体感应
  6. ubuntu搭建jdk1.8运行环境(下载jdk方式)
  7. 深度学习框架之个人见解
  8. php变量赋值有几种,【后端开辟】php变量赋值体式格局有几种
  9. WCF服务实现客户端Cookie共享,表单验证的解决方案
  10. maven安装教程安装教程_Maven教程之春
  11. [机器学习笔记]Note15--大规模机器学习
  12. 【分形算法】Jason带你飞之1——LS文法的java实现
  13. bootdo跳sign in页面
  14. 2022软考软件设计师复习(上午题)
  15. 腾讯云图灵机器人接入微信号
  16. isilon SMB 控制允许IP访问
  17. ftw, nftw - file tree walk
  18. MyBatis是如何自动装配的
  19. item在python中什么意思_Python中使用item()方法遍历字典的例子
  20. 总结:读《程序员的自我修养》

热门文章

  1. Android 视频播放 界面变形处理
  2. 牛顿冷却定律:在用户标签提取上的应用
  3. 合泰单片机点灯c语言程序,ht66f018合泰单片机暖风机的C语言源程序
  4. ASP.NET网站部署详细步骤
  5. C语言程序设计 题目抽签系统
  6. SQL语句 SQL Server中Text类型操作
  7. C/C++游戏项目详细教程:《黄金矿工》
  8. hiberfil.sys彻底删除,释放C盘空间。
  9. TF_REPEATED_DATA ignoring data with redundant timestamp for frame left_wheel at time
  10. 计算机图形学的反走样