V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
CicadaMan
V2EX  ›  问与答

网络概述

  •  
  •   CicadaMan · 2017-08-16 16:40:05 +08:00 · 1642 次点击
    这是一个创建于 2416 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 什么是网络 网络一般分 2 种  局域网和广域网
    • 局域网 局部区域网络(local area network)通常简称为"局域网",缩写为 LAN。局域网是结构复杂程度最低的计算机网络。局域网仅是在同一地点上经网络连在一起的一组计算机。局域网通常挨得很近,它是目前应用最广泛的一类网络。通常将具有如下特征的网称为局域网。
    1 )网络所覆盖的地理范围比较小。通常不超过几十公里,甚至只在一幢建筑或一个房间内。
    2 )延迟比较低
    3 )传输速度非常快
    4 )支持 CSMA/CD
    
    • 城域网 MAN 介于 LAN 和 WAN 之间的
    • 广域网 广域网(wide area network, WAN )它是影响广泛的复杂网络系统。 WAN 由两个以上的 LAN 构成,这些 LAN 间的连接可以穿越 30mile 以上的距离。大型的 WAN 可以由各大洲的许多 LAN 和 MAN 组成。最广为人知的 WAN 就是 Internet,它由全球成千上万的 LAN 和 WAN 组成。 有时 LAN、MAN 和 WAN 间的边界非常不明显,很难确定 LAN 在何处终止、MAN 或 WAN 在何处开始。但是可以通过四种网络特性-通信介质、协议、拓扑以及私有网和公共网间的边界点来确定网络的类型。通信介质是指用来连接计算机和网络的电缆、光纤 电缆、无线电波或微波。通常 LAN 结束在通信介质改变的地方,如从基于电线的电缆转变为光纤。电线电缆的 LAN 通常通过光纤电缆与其他的 LAN 连接。 2.  协议 约定俗成的东西就称之为协议 我们买东西用什么来交易啊 是不是用人民币  默认情况下就是人民币吧  那么是谁规定的 是不是国家规定了  这个就叫做协议  约定俗成的 不需要去问别人的情况下就知道该怎么做这就是一种协议 那么在计算机网络当中我们怎么通信 是不是也需要一个东西来规定一个规则来实现不同系统不同的设备之间的通信 我们就使用一种大家都认可的协议,那么计算机之前的通信协议就叫做 TCP/IP 协议 它是一种通用协议  不管你用什么设备 什么系统都是遵从这个协议 协议就是一种完成进程之间通信的一种规范 3.  TCP/IP 协议(族) 族的意思是 这里面有许多的协议 不是一个协议 在早期的计算机网络中,都是由各自的厂商自己规定一套协议,IBM,Apple 和 microsoft 都有自己的网络协议互不兼容,为了把全世界所有的设备(计算机,手机,路由等等)都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite)就是通用协议标准 因为互联网协议中包含了非常多的协议标准,但是最重要的就是 2 个协议一个是 TCP 一个是 IP 协议,所以大家把互联网的协议简称 TCP/IP 协议 下图包含了常用的网络协议 大家看上图中由几个层次 比如应用层 传输层 网络层 网络接口层 这几个层是干什么用的 根据所用的功能不一样分了几个层 TCP 协议有二种分法  一种是七层一种是 4 层

    TCP 七层协议.jpg 理论是 7 层 但是我们实际应用的时候一般是按 4 层来开发 这个内容经常会面试的时候提到请大家务必记住

    端口

    1. 什么是端口

    举个栗子.jpg 端口就好比是我们的手机号码 你要跟你女朋友联系是不是需要打她的手机号码,这个手机号码就相当于一个端口,那么你去打电话的时候,是不是你自己也需要一个手机号码才可以打电话啊,我们是不是找特定的人给特定的人打电话啊 我们回到应用程序 端口.png 在 linux 系统中,端口可以有 65535(2 的 16 次方)个 既然有这么多,操作系统为了统一管理,所以进行了编号这就是端口号 2. 端口号 端口是通过端口号来标记的,端口号只有整数,范围是从 0 到 65535 3.端口是怎样分配的 按端口号可分为 3 大类: ( 1 )公认端口( WellKnownPorts ):从 0 到 1023,它们紧密绑定( binding )于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80 端口实际上总是 HTTP 通讯。 公认端口就是非常出名的端口好比,大家都知道 110,119,120 是干什么用的,公认端口也是一样的,它是一些非常出名的服务的端口 比如我们在访问 www.baidu.com 的时候,默认访问的就是 80 端口

    ( 2 )注册端口( RegisteredPorts ):从 1024 到 49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从 1024 左右开始。

    ( 3 )动态和 /或私有端口( Dynamicand/orPrivatePorts ):从 49152 到 65535。理论上,不应为服务分配这些端口。实际上,机器通常从 1024 起分配动态端口。但也有例外:SUN 的 RPC 端口从 32768 开始。

    • 总结 端口区分程序 pid 只能在一台机器上面区分进程 怎么区分不同服务器的端口 是 ip+端口来区分 需要连接的端口是固定的,但是连接段会随即生成一个端口

    IP 地址

    1. ip 地址是什么 地址是用来标识位置的 在逻辑上标记一台唯一的电脑 端口.png
    2. ip 地址分类 ip 地址分类.png 192.168.1.1 4 组数字 4 个字节 1 个字节 8 个比特位 A 类地址 192 __ __ __ 前 1 个不可变 后面 3 个可变 B 类地址 192.168.__ __ 前 2 个不可变 最后 2 个可变 C 类地址 192.168.1__ 前 3 个不可变 最后 1 个可变 那么我们地址最大的长度是多少
      192.168.1. 1-254 2^8 有 2 个地址需要注意 一个是 0 192.168.1.0 是你的网络号 192.168.1.255 是广播地址 最小的和最大的不让用 1 也不让用 因为 1 是网关 1~254 同一个网段 就在一个局域网 不允许出现 2 个 ip 地址一模一样 回出现 ip 冲突 为什么要划分 ABC 类地址 254 个地址够了 如果是大公司类 比如阿里 几万个员工 那么我地址就不够了 B 类有多少个地址 2^16 次方 64435

    在很早的时候美国的科学家就已经意识到 IP 地址不够用了,所以出了一个技术叫做私有网络 也就是通过 net 协议来上网,到后来 IP 地址已经被瓜分玩了,每个国家都定义好了,这个 IP 给你 别人就不能用了 如果以后非洲的小伙伴也要用怎么办,在 2001 年就提出了 ipv6 的概念 在 ipv6 的宣传图上有这么一句话 地球上的每一粒沙子都有一个 ip 地址

    1. A 类地址 A 类地址的表示范围为:0.0.0.0~126.255.255.255 ,默认网络掩码为:255.0.0.0 ; A 类地址分配给规模特别大的网络使用。A 类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络。例如 IBM 公司的网络。
    2. B 类地址 B 类地址的表示范围为:128.0.0.0~191.255.255.255 ,默认网络掩码为:255.255.0.0 ; B 类地址分配给一般的中型网络。B 类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址。
    3. C 类地址 C 类地址的表示范围为:192.0.0.0~223.255.255.255 ,默认网络掩码为:255.255.255.0 ; C 类地址分配给小型网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。C 类网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址。

    实际上,还存在着 D 类地址和 E 类地址。但这两类地址用途比较特殊,在这里只是简单介绍一下:D 类地址称为多播地址(一般用于视频会议)某些人能看,某些人不能看,供特殊协议向选定的节点发送信息时用。E 类地址保留给将来使用。

    • 私有 ip 在这么多网络 IP 中,国际规定有一部分 IP 用于我们的局域网使用,也就是私网地址,它们的范围是: 10.0.0.0~10.255.255.255 172.16.0.0~172,31.255.255 192.168.0.0~192.168.255.255

    • 特殊 ip 127.0.0.1 测试网卡的

    socket(套接字)简介

    1. 本地的进程间通信有很多方式 列如
    • 队列
    • 同步 以上通信方式都是在一台机器上不同进程之间的通信方式,那么网络当中的进程之间怎么通信
    1. 网络中进程之间如何通信 首先要解决的问题是如果唯一标识一个进程,如果没有唯一标识符 就不能通信 在本地可以通过进程管理 pid 来唯一标识一个进程,但是在网络中行不通 其实 TCP/IP 协议已经帮我们解决了这个问题,在网络层中的'IP 地址'就是可以唯一标识网络中主机的,而传输层加了'协议+端口' 来识别主机中应用程序(进程) 这样我们就可以听过 ip 地址+协议+端口,就可以标识网络的进程了,网络中的进程通信就可以利用这个标识于其他进程进行交互
    2. 什么是 socket socket 是进程间通信的一种方式,它于其他进程间通信的主要一个不同是: 它可以实现不同主机间的进程通信,我们网络上大部分的服务都是基于 socket 来完成的 列如我们每天浏览网页,qq 聊天,微信聊天,email 等等

    还有更多 技术文章 以及不懂和有错误的地方 欢迎扣群:526929231

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   949 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:50 · PVG 05:50 · LAX 14:50 · JFK 17:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.