Computer Networking Basic
Basic
- 计算机网络由若干结点和连接这些节点的链路组成,由多个计算机网络互联形成的计算机网络就是互联网,而Internet特指因特网使用TCP/IP协议族,前身为ARPANET。
- A主机的某个进程(process:running program)与B主机另一个进程间的通信称为计算机间通信。
- client(请求服务)-- server(同时处理多个远程或本地请求)
peer to peer指两台进行对等连接软件的主机可以下载对方硬盘中的信息 - 路由器实现分组交换,即转发收到的分组
电路交换:报文从源头到终点在一个管道占用资源,建立连接通话释放
报文交换: 整个报文先是传送到一个相邻结点,全部存储下来发到下一个节点
分组交换[报文拆成一个个1024bit(binary digit一个二进制数字,信息量单位)的数据段,加上header(包含目的地址等信息)构成一个package,package在互联网中独立的选择传输路径,由路由器转发直到终点]: 单个分组传送到相邻结点,存储后查找转发到下一个节点 - 开放系统互联基本参考模型OSI/RM(Open systems internet conection reference model)由国际标准化组织ISO于1977年提出
OSI Figure 1-2 | TCP/IP | 计网教材五层(ARPANET Reference) Figure 1-5 |
---|---|---|
应用层 | 应用层(HTTP/SMTP/DNS) | 应用层(H+data) |
表示层 | 运输层(TCP/UDP) | 运输层(H+H+data) |
会话层 | 网络层(IP) | 网络层(H+H+H+data) |
运输层 | 网络接口层 | 物理链路层(H+H+H+H+data+T) |
网络层 | 物理层(比特流 10100...) | |
数据链路层 | ||
物理层 |
图片参照 Computer Networking: A Top-Down Approach:Layering
物理层
物理层单位为比特
路由只上升到网络层,对信息处理后包装回到最下面的物理层
主机(发出数字比特流)——调制解调器(发出模拟信号)——公共电话网(调制)——主机2(接收器)
一条通信电路往往包含一条发送信道和一条接受信道
ADSL(Asummetic dgital subscriberline):非对称数字用户线的下行远超过上行,基于电话线改造。而FTTH(fiber to the home)指光纤到户
数据链路层
- 数据链路层使用的信道有两种类型
- 点对点信道(PPP协议)
- 广播信道(CSMA/CD协议)
- 链路(A——B结点中间无结点的物理线路)+必要通信协议(使用网络适配器实现) = 数据链路
- 帧:SOH—DATA—EOT 定界,中间有字段转义+冗余码(循环冗余检测 确认重传)
- 适配器就是网络接口卡(NIC)在主板上,MAC地址=物理地址=硬件地址=适配器(网卡)标识符
- MAC帧(以太网U2):目的地址+源地址+类型+data(IP数据段)+FCS(检测序列)
网络层(IP)
- 网络层不提供服务质量承诺,灵活,无连接,best-effort
- IP协议配套的还有
- 地址解析协议(ARP):使用IP地址可以找到硬件地址
- 网际控制报文协议(ICMP):允许主机/路由器报告差错
- 网际组管理协议(IGMP)
- 物理层使用的中间设备叫转发器(repeater),数据链路层使用的中间设备叫网桥或桥接器(bridge),网络层使用的中间设备叫路由器(router),应用层与运输层使用网关(gateway)两个不同系统需要协议转换
- IP地址: 就是给互联网上每一台主机/路由器的每一个接口分配一个在全世界独一无二的32位标识符
- A类 0 网络号8 主机号24
- B类 10 网络号16 主机号16
- C类 110 网络号24 主机号
- D类 1110
- 保留 1111
- 三级IP:网络号+子网号(对外仍是一个网络)+主机号
子网掩码:使路由器可以识别存在子网也是32位,二级255.255.x.0,三级255.255.255.x,A类默认255.0.0.0 (因为子网掩码没有正负符号,八位二进制最大11111111为255,有正负最大01111111则是127)
PING(packet internet group):测试两台主机连通性(终点不可达,时间超过,参数问题,重定向) - IGP为内部网关协议,EGP为外部网关协议,最外层为BGP边界网关协议,从内部到外部使用两种算法
- RIP:基于距离向量的路由选择协议,使用UDP传输
- OSRF:开放最短路径优先,使用SPF算法和分布式链路协议,每个路由器都有自己的路由表,但不知道全网拓扑结构,使用IP数据报传输
- VPN(virtual pricate network): 利用公共互联网为本机各个专用网提供通信载体。远程接入VPN(remote access VPN)是指个人通过拨号接入互联网与场所内的电脑建立APN通道,这个通道也是加密的
- IPV6提供了更大的128位的空间,灵活的首部格式。IP多播使用D类地址(标识符 2的28次方多播组),大大提升网络资源分配
运输层(TCP/UDP)
运输层向它上面的应用层提供通信服务,运输层提供主机进程之间的通信。所有的应用进程使用统一的运输层协议,运输层在剥去报文之后把数据交付正确的进程,对收到的报文进行差错检测。
软件端口号port只有本地意义,常见HTTPS 443,HTTP 80,FTP 21,DNS 53
TCP:面向连接,可靠,单位为报文段
TCP连接两个端点,全双工通信,面向字节流,根据网络情况合并拆分之后发送。TCP端点叫socket(套接字)即IP+端口号(192.3.45:80)。允许应用程序连接网络的应用层接口API即运输层与网络层的一种接口叫SocketAPI。TCP采取双方确认,超时重传,错误重传,进行累计确认。
TCP对于不按照顺序到达的数据先进行缓存,补齐后再交付应用层。TCP使用自适应算法计算超时重传的时间,计算报文发送到返回到时间进行加权计算。TCP流量控制会根据对方给出的接受窗口数进行调整,防止过快发送处理不了导致的丢失。拥塞控制先慢开始,逐渐增大发送窗口再进行拥塞避免,缓慢线性增大窗口,失败之后进行快重传快恢复。
建立连接三次握手:A创建传输控制模块,B同意连接并向A确认,A向B确认无误后开始连接。要进行三次是因为最后一次要保证B收到的不是失效的请求,每次请求syn seq ack递增来进行确认。
结束连接四次握手:A向B发出结束请求,B确认后TCP半关闭,B向A发送结束请求,A确认并等待timeout关闭。进行四次是为了确保双方的传输都结束了。
参照 Computer Networking: A Top-Down Approach:TCPUDP:无连接,best-effort,单位为用户报文
这是一个面向报文的协议,应用层交付下来不进行合并拆分直接发送,没有拥塞控制,发送间隔即速度稳定,低时延有丢失,适合电话视频。UDP如果发现端口不正确就丢弃,向网际控制协议(ICMP)发送端口不可达。UDP使用与IP数据报相似的差错处理方式,首部与数据都检测,错误就丢弃,不完全准确但处理很快
应用层
- DNS(domain name system)域名系统分三层,从顶级域名到二级再到三级,与IP地址做对应。顶级域名服务器在国内一般是org com edu cn。DNS使用UDP协议,内部有高速缓存,查询过一次就不再进行请求。DNS与LocalDNS详细内容
- FTP(file transfer protocol)文件传输协议,进行交互式访问
- URL (协议://主机:端口/路径)由于默认端口为80可以省略,HTTP本身是无状态的,代理服务器也会进行高速缓存,当请求相同的时候不再二次请求。1xx 通知收到或者pending ,2xx成功,3xx重定向,4xx客户差错,5xx服务器差错。
- API从程序设计角度定义许多个标准系统调用函数,每个进程都有一个套接字描述表,运行时绑定端口和IP。并发服务器可以处理多个连接,主服务器收到请求之后转发给从服务器来连接套接字。
- 网络安全:数字签名中A用私钥SKA对报文进行D运算再传给B,B用A的公钥进行运算E还原明文报文,核实签名。为了加密报文可以用B的公钥进行加密运算,到B之后再还原报文。
- 流媒体的RTP实时传输协议也使用UDP,压缩编码音视频之后封装成分组再交付给UDP传输,与RTCP配合可以进行服务质量的监视与反馈以及媒体同步,多播组成员的标志也使用UDP
HTTP2.0
header压缩,多路复用(多个请求可以相互混杂),新的二进制格式,服务器可以推送,压缩有了gzip格式。
HTTP多路复用参照 UNIX Network Programming: The Sockets Networking API: I/O Multiplexing