网络相关基础知识

作者: AwesomeAshe | 来源:发表于2016-04-02 21:10 被阅读1787次

    1,每个网络应用都是基于客户端-服务器模型的,一个应用是由一个服务器进程和一个/多个客户端进程组成的。服务器管理某种资源,并且操作这种资源给客户端提供服务。

    2,一些基础偏硬件上的概念:

    • 对于一个主机而言,网络只是又一种I/O设备,作为数据源和数据接受方。
      从网络上接受到的数据从适配器经过I/O和存储器总线拷贝到存储器,典型的是通过DMA(Direct Memory Access)直接存储器存取方式传送。

    • 物理上而言,网络是一个按照地理远近组成的层次系统。最底层是局域网(LAN,Local Area Network ),比如一栋建筑/学校;
      最流行的局域网技术是以太网Ethernet.

    • 一个以太网段(segement)包括一些电缆和一个叫做集线器的小盒子。集线器不加分辨的将从一个端口上收到的每个位复制到其它所有的端口上,因此,每个主机都能看到每个位。

    • 每个以太网适配器都有一个全球唯一的48位地址,它存储在这个适配器的永久性存储器上。一台主机可以发送一段位,称为帧frame。每个帧包括一些固定数量的头,用来识别此帧的来源和长度。
      每个主机适配器都能看到这个帧,但是只有目的主机实际读取它。

    • 使用叫做网桥Bridge的小盒子可以将多个以太网段连接成较大的局域网,称为桥接以太网(Bridged Ethernet)。
      所以呢,就是主机-集线器-网桥,网桥链接网桥,集线器连接网桥和主机。

    • 多个不兼容的局域网可以通过叫路由器Router的特殊计算机连接起来,组成一个互连网络internet;
      注:Internet通常指的是因特网
      每台路由器对于它所连接的每个网络都有一个适配器(端口)。路由器也能链接电话。
      这就是WAN(wide Area Network,广域网)

    • internet(小写)互联网络的的至关重要的特性是,它能够采取完全不同的和不兼容技术的各种局域网和广域网组成。可是是如何解决不同主机之间的数据传输矛盾的呢?
      解决办法是一层运行在每台主机和路由器上的协议软件。这种协议必须提供两种基本能力:
      1,命名方法:internet协议通过定义一种一直的主机地址格式,消除了这些差异。每台主机会被分配至少一种这种internet地址,这个地址唯一的标识了它。
      2,传送机制:互连网络协议定义一种把数据位捆扎成不连续的组块chunk--也就是包---的统一方式,消除了这种差异。一个包由包头和有效载荷组成。

    全球IP因特网

    全球IP因特网是互联网络internet的实现。
    每台因特网主机都运行实现TCP/IP(Transmission Control Protocol/Internect Protocol)协议的软件。
    TCP/IP实际上是一个协议族,每一个都提供不同的功能。

    • IP提供基本命名的方法和递送机制。递送机制能够从一台因特网主机往其他主机发送包,也叫做数据报datagram。
      IP机制从某种意义上说是不可靠的,因为如果数据报在网络中丢失或重复,它并不会恢复。
      UDP不可靠数据报协议稍微扩展了IP协议,这样一来,包可以在进程间而不是在主机间传送。
    • TCP是一个建筑在IP之上的复杂协议,提供了进程间可靠的全双工连接。
      通常我们把TCP/IP协议看成是一个单独的整体协议,不讨论其内部工作。

    从程序员的角度,可以把因特网看作是一个世界范围的主机集合,满足:

    • 主机集合被映射为一组32位的IP地址;

    • 这组IP地址被映射为一组称为因特网域名的标识。

    • 一个因特网主机上的进程能够通过一个连接和任何其他因特网主机上的进程通信。

    • IP地址是一个无符号32位整数。

    • 因为主机的字节顺序可能不一样(大小端),TCP/IP为任意的整数数据项定义了一致的网络字节排序:大端排序法。
      所以主机在通信的时候是要转换成统一的排序的。
      (在汇编里面也有专门的逆序语句)

    • IP地址以点分十进制表示法表示。

    • 因特网域名:域名是为了方便人而将域名(句点分割的字符串)映射到IP上。实际上机器之间用的是IP地址。

    • 因特网连接:
      因特网客户端和服务器通过在连接上发送和接受字节流来通信。
      套接字socket是连接的端点end-point,每个套接字都有相应的套接字地址,是有一个因特网地址和一个16位的整数端口构成的,用地址:端口来表示。
      当客户端发送一个请求时,客户端套接字的地址中的端口是由内核自动分配的,成为临时端口。
      而服务器的套接字地址中的端口通常是某个知名的端口,是和服务器对应的。
      一个连接是它两端的套接字地址唯一确定的。这对套接字地址叫做套接字对(socket pair)
      clientAddr:cliport,serverAddr:servport)

    (这个还有好多。。)

    Web基础

    • web客户端和服务器之间的交互用的是基于文本的应用级协议:叫做HTTP(Hypertext Transfer Protocol,超文本传输协议)。
      一个web客户端(浏览器)打开一个到服务器的因特网连接,并且请求某些内容,服务器响应请求的内容,然后关闭连接。浏览器读取这些内容然后打印到屏幕上。

    • web服务和常见的文件检索服务(如FTP)有什么区别呢?
      主要的区别是,Web内容可以用HTML(Hypertext Markup Language,超文本标记语言)来编写。
      HTML真正的强大之处在于一个页面可以包含指针(超链接),这些指针可以指向存放在任何因特网主机上的内容。

    • web服务器以两种不同的方式向客户端提供内容
      1,取一个磁盘文件,并将它的内容返回给客户端。
      2,运行一个可执行文件,并将它的输出返回给客户端。

    • 每条由web服务器返回的内容都是和它管理的某个文件关联的,这些文件中的每一个都有一个唯一的名字,叫做URL(Universal Resource Locator,通用资源定位符)
      (http://www.jianshu.com/writer#/notebooks/3490311/notes/3445177/preview估计就是一个URL吧)

    文章参考:深入理解计算机系统

    相关文章

      网友评论

      本文标题:网络相关基础知识

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