网络基础篇(一)

OSI模型的七层结构

1、物理层:
二进传输
为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范、和功能规范。
2、数据链路层:
访问介质:
定义如何格式化数据以便进行传输以及如何控制对网络的访问。
支持错误检测
3、网络层:
路由数据包
选择传递数据的最佳路径
支持逻辑寻址和路径选择
4、传输层:
确保数据传输的可靠性
建立、维护和终止虚拟电路
信息留空制来保障可靠性
5、会话层:
主机间通信
建立、管理和终止在应用程序之间的会话
6、表示层:
数据表示:
确保接受系统可以读出该数据
格式化数据
构建数据
协商用于应用层的数据传输语法
提供加密
7、应用层:
网络进程访问应用层:
为应用程序进程(例如,电子邮件、文件传输和终端仿真)提供网络服务
提供用户身份验证

PDU:

PDU:Prtocol Data Unit,协议数据单元是指对等层次之间的数据单位
物理层的PDU是数据位bit
数据链路层的PDU是数据帧frame
网络层的PDU是数据包packet
传输层的PDU是数据段segment
其他更高层次的PDU是消息message

三种通讯方式:

单播:unicast
广播:broadcast
主播:multicast

UTP交叉线T568A和T568B的线序

T568A:
绿白、绿、橙白、蓝、蓝白、橙、棕白、棕

T568B:
橙白、橙、绿白、 蓝、蓝白、绿、棕白、棕

Hub集线器

Hub:多端口中继器
Hub并不记忆该信息包是由哪个MAC地址发出,哪个MAC地址在Hub的哪个端口
Hub的特点:
共享带宽
半双工

以太网桥

交换式以太网的优势
扩展了网络带宽
分割了网络冲突域,使网络冲突被限制在最小的范围内
交换机作为更加智能的交换设备,能够提供更多用户所要求的功能:优先级、虚拟网7远程检测......

Hub和交换机

集线器属于OSI的第一层物理层设备,而网桥属于OSI的第二层数据链路层设备
从工作方式来看,集线器是一种广播模式,所有端口在一个冲突域里面。网桥的可以通过端口隔离冲突
Hub是所有共享总线和共享带宽。网桥每个端口占一个带宽

路由器

为了实现路由,路由器需要做下列事情:
分隔广播域
选择路由表中到达目标最好的路径
维护和检查路由信息
连接广域网

路由

路由:把一个数据包从一个设备发送到不同网路里的另一个设备上去。这些工作依靠路由器来玩成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成。

VLAN

分隔广播域
安全
灵活管理
VLAN=广播域=逻辑网络(Subnet)

分层的网络架构

核心层Core Layer
企业级应用快速转发
分布层Distribution Layer
广播域,路由,安全,远程接入,访问层汇聚
访问层AccessLayer
终端输入

TCP/IP协议栈

TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都呼叫它的下一层所提供的协议来完成自己的需求。由于我们大部分时间都工作在应用层,下层的事情不用我们操心;其次网络协议体系本身就很复杂庞大,入门门槛高,因此很难搞清楚TCP/IP的工作原理,通俗一点讲就是,一个主机的数据要经过哪些过程才能发送到对方的主机上。

应用层常见的网络协议及端口号

http80  https 443 ftp21 dnstcp53 udp53 tftp69 smtp25 pop3 110 imap143 telnet23 ssh22 mysql 3306
oracle 1521
sql server 1433
redis 6379

TCP特性

工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法

有限状态机FSM:Finite State Machine

CLOSED 没有任何连接状态
LISTEN侦听状态,等待来自远方TCP端口的连接请求
SYN-SENT 在发送链接请求后,等待对方确认
SYN-RECEIVED在收到和发送一个连接请求后,等待对方确认
ESTABLISHED代表传输连接建立,双方进入数据传送状态
FIN-WAIT-1主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭连接请求
TIME-WAIT完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT被动关闭,收到对方发来的关闭连接请求,并以确认
LAST-ACK被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING双方同时尝试关闭传输连接,等待对方确认

有限状态机

客户端先发送一个FIN给服务端,自己进入了FIN_WAIT_1状态,这时等待接受服务端的报文,该报文会有三种可能:
只有服务端的ACK
只有度无端的FIN
基于服务端的ACK,又有FIN
1、只收到服务器的ACK,客户端对进入FIN_WAIT_2状态,后续当收到服务端的FIN时,回应发送一个ACK,会进入到TIME_WAIT状态,这个状态会持续2MSL(TCP报文段在网络中的最大生存时间,RFC 1122标准的建议值是2min)。客户端等待2MSL,是为了当最后一个ACK丢失时,可以再发送一次。因为服务端在等待超时后会再发送一个FIN给客户端,进入客户端知道ACK已丢失
2、只有服务端的FIN时,回应一个ACK给服务端,进入CLOSING状态,然后接受到服务端的ACK时,进入TIME_WAIT状态
3、同时收到服务端的ACK和FIN,直接进入TIME_WAIT状态

客户端的典型状态转移

客户端通过connect系统调用主动与服务器建立连接connect系统调用首先给服务器发送一个同步报文段,使连接转移到SYN_SENT状态
此后connect系统调用可能因为如下两个原因失败返回:
1、如果connect连接的目标端口不存在(未被任何进程监听),或者该端口仍被处于TIME_WAIT状态的连接所占用(见后文),则服务器将给客户端发送一个复位报文段,connect调用失败。
2、如果目标端口存在,但connect在超时时间内未收到服务器的确认报文段,则connect调用失败。
connect调用失败将使连接立刻返回初始的CLOSED状态。如果客户端成功收到服务器的同步报文段和确认,则connect调用成功返回,连接转移至ESTABLISHED状态。
处于FIN_WAIT_2状态的客户端需要等待服务器发送结束报文段,才能转移至TIME_WAIT状态,否则它将一直停留在这个状态。如果不是为了在半关闭状态下继续接收数据,连接长时间地停留在FIN_WAIT_2状态并无益处。连接停留在FIN_WAIT_2状态的情况可能发生在:客户端执行半关闭后未等服务器关闭连接就强行退出了。此时客户端连接由内核来接管,可称之为孤儿连接(和孤儿进程类似)
Linux为了防止孤儿连接长时间存留在内核中,定义了两个内核参数:
/proc/sys/net/ipv4/tcp_max_orphans指定内核能接管的孤儿连接数目
/proc/sys/net/ipv4/tcp_fin_timeout指定孤儿连接在内核中生存的时间

TCP超时重传

异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务
TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接受方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略
与TCP超时重传相关的两个内核参数:
/proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
/proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30Min)

拥塞控制

网络中的带宽、交换节点中的缓存和处理机等,都是网络的资源。在,某个时间,若对网络中某一资源的需求超过了该资源所能提供的可承受的能力,网络的性能就会变坏。这种情况就叫做拥塞
TCP为了提供=高网络利用率,降低丢包率啊,并保证网络资源对每条数据流的公平性。即所谓的拥塞控制
TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:
慢启动(slow start)、拥塞避免(congestin avoidance)、快速重传(fastretransmit)和快速恢复(fast recovery).拥塞控制算法在linux下有多种实现,比如reno算法、vegas算法和cubic算法等。它们或者部分或者全部实现了上述四个部分
当前所使用的拥塞控制算法
/proc/sys/net/ipv4/tcp_congestion_control

UDP特性

工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性

原文地址:http://blog.51cto.com/13914877/2161353

时间: 2024-11-10 02:16:59

网络基础篇(一)的相关文章

网络基础篇----计算机网络基本概述(1)

享受生活  热爱挑战                                                                刘明远分享    一   计算机网络基本概述(1) 每章一段话: 不要让自己闲下来,给自己找些事情做.哪怕是看看书. 正文   (提示:本章内容比较无聊,最好当看故事一样来看,不必记下只需了解,内容基础) 1什么是计算机网络 号称新的"电力火花"是以计算机.通信.信息技术为支撑的计算机网络技术. 计算机网络将两台或多台计算机通过电缆或网络设

鸟哥的私房菜的网络基础篇,好久没看了,重新看了一下子网划分简单很多

第二章.基础网络概念 目录 第二章.基础网络概念 1 2.1 网络是个什么玩意儿 2 2.1.1 什么是网络 2 2.1.2 计算机网络组成组件 5 2.1.3 计算机网络区域范围 6 2.1.4 计算机网络协议: OSI 七层协定 7 2.1.5 计算机网络协议: TCP/IP 11 2.2 TCP/IP 的链结层相关协议 12 2.2.1 广域网使用的设备 13 2.2.2 局域网络使用的设备-以太网络 14 2.2.3 以太网络的传输协议:CSMA/CD 16 2.2.4 MAC 的封装格

大二层网络-基础篇

一.传统数据中心网络架构: 传统的数据中心网络通常都是二层+三层网络架构,如下图所示. 我们看到这种零售行业的"加盟店"形式架构,以及与之相对应的"三层到边缘"架构,以及我们下面要谈到的"大二层"架构,就相当于"直营店"了.之所以采用这种网络架构,是因为这种架构非常成熟,相关的二三层网络技术(二层VLAN+xSTP.三层路由)都是成熟的技术,可以很容易的进行部署,也符合数据中心分区分模块的业务特点. 二.服务器虚拟化趋势: 由

网络基础篇(一)--TCP/IP协议族

TCP/IP协议族是一个分层,多协议通信体系. 1 TCP/IP协议族体系结构 TCP/IP协议族自底而上分为四层: 数据链路层, 网络层, 传输层和应用层. 1.1 数据链路层 实现网卡接口的网络驱动程序,以处理数据在物理媒介(如,以太网, 令牌环)上的传输. 常用协议: ARP协议和RARP协议 1.2 网络层 实现数据包的选路和转发.采用逐跳通信方式. 常用协议:IP协议和ICMP协议(并非严格意义上的网络层协议,它是基于IP协议的) 1.3 传输层 为两台主机上的应用程序提供端到端的通信

网络基础篇之HDLC、PPP(原理)

一.广域网传输 之前讲解的都是关于局域网的数据传输,这次讲解的是广域网的传输. 广域网简称WAN,是一种跨越超大的.地域性的计算机网络集合.通常跨省.市.甚至一个国家.广域网包括很多子网,子网可以是局域网:也可以是小型的广域网. 由于串行通信有着传输距离远.成本低的特点,所以远距离.超远距离的通信中较常使用串行通信. 二.传输协议及方式 在广域网的传输中,有几种协议,本文章说明一下HDLC.PPP. 三.HDLC 1. 什么是HDLC HDLC是高级数据链路控制协议,是一种数据链路层的协议.HD

Windows Azure系列 -《基础篇》- 创建虚拟网络

如何在Windows Azure中创建虚拟网络,以构建云环境中的虚拟局域网: 1.登陆Windows Azure平台,点击侧边栏网络按钮,在中间点击"创建虚拟网络". 2.在接下来的配置页面,填写虚拟网络的名称.选择地理外置和地缘组(如果已有),没有则选择创建新的地缘组. 3.接下来填写DNS服务器地址(没有则留空) 4.规划和配置IP网络,选择适用的地址空间. 5.最后点击确认按钮完成. Windows Azure系列 -<基础篇>- 创建虚拟网络,布布扣,bubuko.

linux网络编程之TCP/IP基础篇(一)

从今天起,将会接触到网络编程,平台是linux,实现语言C语言,最后将会实现一个简易的miniftp服务器. 主要的内容安排为:linux网络编程之TCP/IP基础篇,SOCKET编程篇,进程间通信篇,线程篇,实战ftp篇. 1.ISO/OSI参考模型:open system interconnection开放系统互联模型是由OSI(international organization for standardization )国际标准化组织定义的网络分层模型,共七层. 各层的具体含义: 物理层

Linux网络配置基础篇

Linux网络配置基础篇 一.如何实现linux网络通信? 1)指定IP/NETMASK可实现本地通信: 2)指定路由(网关)可实现跨网络通信: 3)指定DNS服务器地址可实现基于主机名的通信, 主DNS服务器地址(当前服务器不在线时,启用备用DNS服务器地址) 备用DNS服务器地址 第三备份DNS服务器地址 二.配置网络方式及网络接口命名 linux 网络属于内核的功能, 配置方式: 静态指定:使用命令直接指定或修改配置文件 动态分配:依赖于本地网络中有DHCP服务 网络接口命名方式: 传统命

Java基础篇Socket网络编程中的应用实例

说到java网络通讯章节的内容,刚入门的学员可能会感到比较头疼,应为Socket通信中一定会伴随有IO流的操作,当然对IO流比较熟练的哥们会觉得这是比较好玩的一章,因为一切都在他们的掌握之中,这样操作起来就显得非常得心应手,但是对于IO本来就不是多熟悉的哥们来说就有一定的困难了,在搞清楚IO流操作机制的同时还必须会应用到Socket通信中去,否则会对得到的结果感到非常郁闷和懊恼,下面就和大家一起分享一下自己遇到一点小麻烦后的感触以及给出的解决办法. 要求:客户端通过Socket通信技术上传本地一