CCNA 必备:Linux 网络基础知识入门及 tcp 协议
内容介绍:
一、交换机的弊端及优化方法
二、网络分层
三、TCP/IP协议栈
四、TCP/IP分层
五、TCP协议特性
六、TCP包头
一、交换机的弊端及优化方法
1. 弊端
交换机是一个典型的二层设备,不能隔断广播域的,但是在生产中确实有这种需求,比方说企业里面主机和主机之间相连,很多情况下用的都是交换机相连,只有连接互联网的时候可能会用到相应的路由器设备。
一个路由器连接了一个交换机,交换机又连接了各自的生产工作中的电脑上,由于交换机默认不能隔断广播域,只要连到交换机上,彼此之间相互之间都可以直接相连。换句话说,如果有两台主机,主机A这个主机B,假设A主机是销售部所在的部门。
B主机是财务部所在部门,由于这两个主机在同一个交换机上相连,彼此之间可以畅通无阻的直接相互访问。
但是财务部的主机里有一些比较敏感的财务数据,如果两者之间互相完全不加以控制的互相访问,比如a主机在知道B电脑IP地址的情况下,可以直接访问B主机,无形中带来了一些安全风险。
2. 优化方法
引入VLAN,可以在隔离广播域的同时保证了其安全性并且可以灵活管理。
VLAN叫作虚拟局域网,V表示虚拟的。虚拟局域可以使交换机隔断广播。
举例如图所示,这个建筑物是三层的,三层中每层都有交换机,负责把同一层的办公电脑连起来。
但是每层都有不同部门的电脑,比方说第一层,第二层,第三层都有销售部的电脑,HR的以及是工程部的电脑,三个部门在每一层均有分布。
理论上希望销售部的员工可以彼此之间相互访问,但是对其他部门的访问加以控制,此时就可以用vlan技术来实现。
在交换机分别连接的不同的接口上划分成不同的vlan,将交换机上的八个接口划分到vlan1里,给销售部使用,另外八个接口放到vlan2中,给HR使用,另外八个接口放置vlan3中,供技术部使用。使用vlan的好处是不同vlan之间的主机不能直接通讯,只有再通过路由器进行连接,且可以通过路由器控制不同vlan里主机的通讯。
但是vlan技术也存在一定弊端,例如路由器的接口有限,不同vlan之间的主机通讯也就受到了限制,而且需要引入trunk 协议进行连接,引入trunk后也不可以保证接收端可以完全区分输送端的vlan接口,因此数据在trunk一端输出的瞬间需要添加一个vlan信息进行标记,相当于修改了数据包的帧结构。
trunk协议有很多种,例如ISL协议(不通用)、802.1Q(国际通用),不同trunk协议的区别是对vlan信息的标记地点不同,802.1Q标记在type类型和源之间。
二、网络分层
搭建网络时,如何实现网络分层
在企业里面搭建网络,分成三层,分层是从另一角度来划分的,是从搭建网络的角度即规划网络来划分的,而不是根据OSI 模型的功能来划分的。
普通电脑接入到普通交换机,叫做接入层,它负责把电脑接入到网络里面;主机联网以后,交换机之间彼此的连接往往希望外一些安全控制,比如实现一些访问控制,一般来讲用就会用到分布层,分布层一般是用路器来实现服务功能,因为只有路由器才能制定两个网络之间的安全策略,起到了路由,安全,广域网等功能。
但是在有些特定的场合下,我们可能需要额外的一层叫核心层。
核心层的作用是起到快速转发的功能,比方说有些工业区里有很多办公大楼,就会有很多交换机,交换机连接到了后端的路由器上,路由器可以起到路由、安全、广域网等功能,把不同网络的主机连接起来,但是路由器的性能是有限的,如果使园区里一些非常重要的服务器能够被主机快速地访问,就需要用到核心层。
核心层用的是高端的高速交换机,这个交换机的性能提高,它可以连接到路由器上,而且由于交换机的性能特别好,因此可以直接连接服务器。
服务器接到高速交换机上速度是相当高的,可以达到10G以上的速度,这样就可以实现园区各大楼主机快速访问服务器且性能不会受到很大影响。
三、TCP/IP 协议栈
1、TCP/IP 概念
Transmission Control Protocol/Internet Protocol
(传输控制协议/因特网互联协议)TCP/IP 是一个Protocol Stack,包括 TCP、IP 、 UDP 、 ICMP 、 RIP 、 TELNET 、 FTP 、SMTP、
ARP 等许多协议,它最早发源于美国国防部(缩写为 DoD )的因特网的前身 ARPA 网项目,1983 年 1 月 1 日,TCP/IP 取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准,由互联网工程任务组负责维护。
2、TCP/IP 协议与osi参考模型之间的关系
实际上TCP/IP最早的时候,其前身是ARPA网络,这个网络的历史相当悠久,它的诞生日期和Unix的诞生是同一年——1969年。
osi模型大概是在1977年左右才出现的,所以osi 模型的历史还不是特别悠久。
TCP/IP协议是一个市场化的标准,历史太悠久而且得到了广泛普及,无论是局域网还是广域网,都用的是TCP/IP协议。
3、TCP/IP 的分层
应用层,传输层,Internet 层,网络访问层
4、TCP/IP 分层和 ISO 参考模型分层的对应关系
TCP/IP 协议之所以称之为堆栈,是因为它并不是两个协议的加和,不是说TCP加IP,不只是两个协议,而是一个协议的集合。
它最上面的一层相当于osi参考模型的上三层——应用层、表示层、会话层;再往下的传输层是一样的,功能也是一样的;TCP/IP协议里的Internet层,对应于osi 模型的网络层的;TCP/IP的数据链路层和物理层称为网络访问层。
四、TCP/IP 分层
1. Application(应用层)
http https ftp nfs dns tftp smtp pop3 imap ternet ssh QQ等都属于应用层协议,它们唯一的区别方式是端口号。应用层的协议种类繁多,可以通过etc/service查询
- File transfer
-FTP
-TFTP
-Network File System
- Simple Mail Transfer Protocol
- Remote login
- Telnet
-rlogin
- Network management
Simple Network Management
Protocol
- Name management
- Domain Name System
2、Transport(传输层)
为应用层提供服务,用的较多的两个协议是TCP 和UDP。传输层要为应用层的不同协议提供特殊标记(即通过端口号)。
传输层的注主要功能对应于osi 模型中的传输层功能:
可以支持多路会话、分段、流控制、面向连接、可靠(流控制、面向连接、可靠均是在特定协议下的功能)
- 可靠性(TCP协议) VS 高效性(UDP 协议)
|
Reliable
|
Best-Effort
|
Connection Type
|
Connection-oriented
|
Connectionless
|
Protocol |
TCP(传输控制协议)
|
UDP(用户数据包协议)
|
Sequencing
|
Yes
|
No
|
Uses
|
. E-mail(邮件) . File sharing(文件共享) Downloading(文件下载)
|
. Voice streaming . Video streaming
|
3、Internet
与上述同理,在Internet 层要体现上层(传输层)的协议类型,也应有一个特殊标记
4、Network Access
五、TCP 协议特性
1、工作在传输层
2、面向连接协议
3、全双工协议(双向的传输)
4、半关闭
5、错误检查
6、将数据打包成段,排序
7、确认机制
8、数据恢复,重传
9、流量控制,滑动窗口
10、拥塞控制,慢启动和拥塞避免算法
六、TCP 包头
决定TCP特性的因素,位于传输层,传输层的报文头部TCP在中间,它的外层是网络层的头部,TCP是传输层,传输层在里面,内层应该是会话层的头部。
TCP处于网络层和会话层中间的位置,对应字母T,T字母前面是网络层,再往后是S,表示会话层。传输层是中间传输层的第一种格式,当然也有UDP 格式,传输层的TCP 头部的报文格式如下图所示。该图是按照二进制绘制的。
一行是0到31个位,共32位。其中0到15表示源端口,16到31表示目标端口。
1、端口号定义:TCP 协议 PORT
端口号相当于应用程序的唯一标识,即一个程序的地址。传输层通过 port 号,确定应用层协议Port number:
- tcp: 传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路0-65535
- udp:User Datagram Protocol,无连接的协议0-65535
而0-1023这是互联网数字分配机构(IANA)进行分配的,如果自己开发一个软件,必然要使用某个端口号,此时不要用0到1023了,因为国际上有关于1023的标准定义,已经被一些通用著名程序使用了,可以使用高一些的端口号。
像22(ssh)、著名的HTTP(80)、HTTPS(443)、dns(53)、ftp(21,20等)、tftp(69)、smtp(25)、pop3(110)、imap(143)、ternet(23)、mysql(3306)、Oracle(1521)、sql server(1433)。1024-49151用户端口或注册端口,要求并不严格,分配给程序注册为某应用使用。
49152-65535:动态端口或私有端口,客户端程序随机使用的端口,其范围的定义:/proc/sys/net/ipv4/ip_local_port_range
2、源端口、目标端口
计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用 16 位表示的,可推算计算机的端口个数为 2^16 个
3、序列号
表示本报文段所发送数据的第一个字节的编号。在 TCP连接中所传送的字节流的每一个字节都会按顺序编号。
由于序列号由 32 位表示,所以每 2^32 个字节,就会出现序列号回绕,再次从 0 开始
4、确认号
表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:
我希望你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号
5、数据偏移
表示TCP 报文段的首部长度,共 4 位,由于 TCP 首部包含一个长度可变的选项部分,需要指定这个 TCP 报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。
该字段的单位是 32 位(即 4 个字节为计算单位), 4位二进制最大表示 15,所以数据偏移也就是 TCP 首部最大 60字节
6、标记位
- URG
表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当 URG=1 时才有效
- ACK
表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当 ACK=1 时,前面的确认号字段才有效。
TCP 规定,连接建立后,ACK 必须为 1,带 ACK 标志的 TCP 报文段称为确认报文段
- PSH
提示接收端应用程序应该立即从 TCP 接收缓冲区中读走数据,为接收后续数据腾出空间。
如果为1, 则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP 接收缓冲区中
- RST
如果收到一个 RST=1 的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。
或者说明上次发送给主机的数据有问题,主机拒绝响应,带 RST 标志的 TCP 报文段称为复位报文段
- SYN
在建立连接时使用,用来同步序号。当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1 时,表示对方同意建立连接。 SYN=1 ,说明这是一个请求建立连接或同意建立连接的报文。
只有在前两次握手中 SYN 才置为 1,带 SYN 标志的 TCP 报文段称为同步报文段
- FIN
表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果 FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带 FIN 标志的 TCP 报文段称为结束报文段
7、通讯的面向连接:
TCP是面向连接的协议,所谓面向连接就是在通讯之前要确保对方与自己有一个可靠的连接,它是通过三个过程来实现,俗称三次握手。例如,A想和B通讯,假设A是客户端,B是服务器地址和服务器。
客户端想连服务器的时候,如果用TCP协议,例如我们平时使用的HTTP 服务都是基于TCP协议,在进行通讯的时候,第一步要检查有没有可靠连接,会把标记的SYN(同步位)打为1,第一次的数据就以这样的方式发送出去了,发出去时也存有一个序列号,记作x。
发出去对方收到以后,确认并回ACK,然后再发一个确认表示第二步回来的信息收到了。