软件工程师须要了解的网络知识:从铜线到HTTP(一)—— 前言

转自:https://lvwenhan.com/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/485.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.iohtml

 

写做目标

本文面向中国互联网届众多的“应用软件工程师”,确切地说,面向 web 后端工程师(Java、PHP),web 前端工程师,移动开发工程师(iOS、Android)。本文将从铜线讲起,一路讲到 HTTP,为你们剖析出一个真实的“网络”。前端

写做由来

内容来源

前两天我给一个要跳槽的作 iOS 的哥们儿讲了几个小时的网络,给他的面试铺路,在讲以前,我就意识到了此次的内容若是可以整理一下将会是一套丰富的面向软件工程师的网络教程。git

为何是我

我装系统起家,从本身搭建网站开始了解 PHP 技术,大学期间经过作外包成了一名 web 全栈,毕业后创业由于招不到满意的 iOS 因而本身动手写 Swift——当时 Swift 刚刚发布半年,基础库匮乏并且还有缺陷,因而我本身造了一堆轮子,其中就有网络库,因而我对 HTTP 有了深刻的理解(实际上超级简单没啥好深刻的),又搞了 HTTPS pinning,加上我本身作后端和运维,本身申请、购买、部署证书,对 HTTPS 有了一些了解;后来再次创业本身搭建办公室网络,对路由器、交换机、网关、DHCP、DNS 等的概念有了亲身体会,加上我偶尔也会从我买了不看的书堆中找出《图解 HTTP/TCP,IP/网络硬件》啥的看一看,加上此次讲解的机会,终于融会贯通了。程序员

说说融会贯通

大学时候我对计算机的理解融会贯通的点在“编译”,最近的融会贯通在于我看了神书《CS:APP》,对计算机系统又有了更深刻的理解:硬件和操做系统是密切配合的;当前 x86_64 PC 的性能大部分来自于“缓存” + “乐观” 的概念。之后有机会的话我会写文章分享一下个人理解。github

本文约定

本系列文章中,咱们将进行以下几个重要约定:web

  1. 本文目标是让软件工程师了解网络各层的本质,而不是事无巨细什么都讲
  2. 有些部分我将会用打比方的形式讲解,目的是让读者更容易理解,而不是每一个细节都彻底是真实情形
  3. 若是有我理解的不对的地方欢迎在评论里指出

WRITTEN BY

avatar
 
 
相关文章
相关标签/搜索