计算机网络概论#

  • 互联网的所有设备都有一个IP地址。

  • IP地址的格式:x.x.x.x,每个x都是一个8位二进制数。所以IP地址由32位二进制数组成。

  • 域名是IP地址的别称,为了方便人类记忆。比如Google主页的IP地址之一172.217.25.14,域名是google.com

  • DNS服务器里存储域名和IP地址的对应关系。

  • 可以通过nslookup命令来查找域名对应的IP地址。如果你用Mac,在Launchpad里面搜索”Terminal”。如果你用的是Windows,在开始菜单中搜索”cmd”进入终端。输入”nslookup google.com”,显示类似如下结果:(返回的IP地址可能不同,与电脑配置的DNS服务器有关)

  nslookup google.com
  
  Server:     10.10.0.215
  Address:    10.10.0.215#53

  Non-authoritative answer:
  Name:       google.com
  Address:    172.217.25.14
  • 路由器的作用是对数据进行转发,类似物流公司根据目的地对包裹进行中转。

  • 可以通过traceroute命令来观察数据的路径。如果你用Mac,在终端里面输入”traceroute google.com”; 如果你用Windows,在终端里面输入”tracert google.com”。

网络协议#

终端#


  • 终端和我们日常用的浏览器一样,本质也是一段程序。只不过这个程序可以对电脑做更多的事情。

  • 终端的界面对于某一类人群非常友好,比如工程师、科研工作者等。但对于我们普通用户来说,我们更习惯于用浏览器浏览网页。

  • 浏览器的本质也是一段程序。网络通信实际上是程序和程序之间的通信。

客户机-服务器模型#


  • Google.com本质也是一段程序,这段程序在google的服务器上运行。

  • 访问google.com时,浏览器作为一个客户机(Client)向google的服务器发出一个请求。Google服务器(Server)响应请求并将搜索的结果返回给客户机。

c

  • 可以类比我们平常去餐馆吃饭。我们点菜的时候,是作为客户在消费。我们作为消费者,角色相当于客户机,餐馆则作为服务器提供服务。一个餐馆同一时段可能要服务很多客户。同样,一台服务器同时也会处理很多客户机的请求。

  • 客户机-服务器模型是现代互联网的基本架构。客户机之间交流需要通过服务器进行。现代互联网是以服务器为中心来运行的。

s

.. image:: server.png :scale: 50%

HTTP#


  • HTTP:Hyper Text Transport Protocol,超文本传输协议。HTTP是一整套客户机和服务器之间的通信规范。

  • 我们访问google.com,可以类比浏览器向google服务器发了一封信。信封上面除了寄信和收信地址以外,还有如下两行:

    GET / HTTP/1.1 HOST: www.google.com

  • GET表示浏览器希望从google服务器获取信息,HTTP/1.1表示浏览器访问google使用的是HTTP协议的1.1版本。HOST一行代表浏览器希望访问的服务器域名。

  • google服务器回复了一封非常长的信。信封上面的前两行是:

    HTTP/1.1 200 OK Content-Type: text/html

  • 信封上的信息(不管是寄信还是收信)称作HTTP header。它里面包含了寄信人和收信人的一些基本信息。日常生活中,我们寄快递需要填一个单子,收信人和寄信人是谁,里面是什么类型的物品,大概有多重,需要怎么运输,是陆运还是空运……

  • 200是HTTP的状态码,表示浏览器的请求进行顺利。

HTTP的状态码还有很多,一些常用的状态码列举如下:

  • 200: OK

  • 301: Moved Permanently

  • 302: Found

  • 307: Temporary Redirect

  • 401: Unauthorized

  • 403: Forbidden

  • 404: Not Found

  • 500: Internal Server Error

  • 301、302、307的含义是类似的,都意味域名资源已经改变了位置。服务器通常会发送HTTP Location来重新定向到新的位置。

  • 在Chrome浏览器中我们可以记录并观察每一条网络请求的相关信息。进入chrome之后,鼠标右键->inspect->Network,然后点击Preserve Log(记录所有网络请求)。

chrome

  • 在浏览器地址栏中输入google.com,你会看到工具栏中出现了很多请求。其中第一个请求状态码是301,表示google.com对应的域名资源已经改变了位置,新的域名在Response Headers中的Location里面。

301

.. image:: 301.jpeg :scale: 50%

  • 浏览器又向新的域名发了一次请求。第二个请求的状态码是307。意味着第一个请求返回的新的域名资源依然不存在,服务器又返回一个新的地址。

307

  • 浏览器又向新的域名发了一次请求。第三个请求的状态码是200。意味着新的域名资源是存在的,并且返回相应的网页。

  • 我们可以看到访问Google主页,浏览器总共向服务器发送了63次请求。

R

去中心化浪潮#

  • 我们每天都在使用互联网公司提供的服务,比如通过微信服务器聊天,通过钉钉服务器上网课,通过淘宝和京东服务器网购。

  • 中心化的服务器为我们的生活提供了很多便利,但也带来了很多问题,包括隐私、安全、成本昂贵、垄断等等。

  • 现在科技界兴起一波“去中心化”的浪潮,目的是打破大公司的服务器在互联网中的垄断地位。

  • 典型去中心化技术包括P2P和Blockchain。

WWW#

  • www是world wide web的缩写,中文又称做万维网。在互联网刚刚兴起时网站很少,为了区别于其它网络服务(如邮箱服务),很多网站习惯在域名前面加上www。

  • www.qq.com是qq.com的子域名。qq.com的其它子域名还包括mail.qq.com(qq邮箱)、live.qq.com(企鹅直播)、auto.qq.com(腾讯汽车)……

作业#

完成作业:

  1. 请查找自己计算机的IP地址,在本题下方放上屏幕截图。

  2. 打开终端(Windows是cmd),用nslookup命令查找下列域名对应的IP地址,并在下方放上屏幕截图。

  1. 请用traceroute(Mac)或者tracert(Windows)命令来追踪从你的电脑到任意一个国外大学的服务器的网络路径,放上屏幕截图并回答下列问题:

    a. 请描述路径经过的地理位置,以及传输所需要的时间

    b. 第一个路由器的ip地址是多少?你认为第一个路由器在哪里?

对于traceroute命令,你可以查看:https://www.fortinet.com/cn/resources/cyberglossary/traceroutes

  1. HTTP 响应状态码用来表明特定 HTTP 请求是否成功完成。 响应被归为以下五大类:

  • 信息响应 (100–199)

  • 成功响应 (200–299)

  • 重定向消息 (300–399)

  • 客户端错误响应 (400–499)

  • 服务端错误响应 (500–599)

访问以下网站,通过浏览器中的开发者工具来查看网络请求和相应。其中最主要的状态码是什么?状态码在这里的作用是什么?

提交方式:每位同学提交一份Word文档,截止本周日晚10点。