OSI 和 TCP/IP
韦恩先生提示:网工不创造数据,只是数据的搬运工,无论是图片、视频、游戏还是什么的,对网工而言都只是数据。
9
网工到底在做什么?
因为人们的生活、生产的需要,就会有了各种各样的应用,例如xxxx
而这些应用被人们所接受、所发送都是通过信息的产生,图片、视频、有plmm的视频等方式
1.计算机对plmm不感兴趣,它只能识别1010101,对于人类而言我们无法看懂10101010。
2.好在这个不是我们需要关心的,网络工程师不关心怎么来的,怎么转换的,我们只管关心数据转发。
3.如果你能关心数据的010101,数据的衰减增益,可以到很多物理层的厂商,比如网线、光纤、熔纤仪、配线架等物理层周边配套的厂商。
4.如果你关心数据的内容,可以做前端漂亮网站,后端数据库对接,形成动态网站等等。
5.如果你全会,那就是全栈工程师,全栈斗士,全学下来,基本就学废了。
所以我们接触的领域只是把上层的无论什么应用数据通过我们的合理的网络拓扑的最优路径和与之相匹配的设备送达到数据的目的地,但是如何通过光信号和电信号进行传递的,不是我们关心的。所以网工接地气,但是也不那么接“地表”。
OSI
那这些模棱两可的划分区间似乎不能那么清晰的判断出我们的存在,我们可以使用OSI参考模型进行大致的划分。
A:OSI模型(Open Systems Interconnection Model)
ISO:国际标准化组织(International Organization for Standardization)
IOS:苹果或者Cisco操作系统
为什么需要OSI参考模型
一个社会一个行业都不希望在某个领域有垄断的存在,垄断了就可以坐地起价,唯我独尊。通过标准化的方式,让厂商遵循标准来生产设备、开发功能,这样客户就可以不被某个厂商绑架,做到百花齐放。
OSI模型的设计目的是成为一个所有设备制造商都能实现的开放网络模型,来克服使用众多私有模型所带来的困难和低效性。刚推出的时候,美国政府还进行政策保障,如果不按照OSI参考模型来设计产品,那么将不采购他们的设备。
参考模型优势
物理层:绿联、安特卫普、徳特维勒
OSI七层
网工主要掌握下4层,了解上3层
应用层(Application Layer)
不服务于任何其他层,就是为App提供相应的服务,比如为HTTP、域名解析DNS提供服务。
9表示层(Presentation Layer)
1.使得应用数据能够被不同的系统(Windows\Linux等)进行识别和理解
会话层(Session Layer)
建立管理和中止两台通信主机之间的会话。
传输层(Transport Layer)
现阶段只要知道(源目)端口,用于确定上层的应用。用于确定源和目的的连接
通过知名的端口(目的),来确定访问某个上层应用,例如目的端口位80/443 - web服务
netstat -aon
ESTABLISHED:TCP三次握手已经建立
15808:进程号
源端口56864代表自身的上层应用软件(例如这里的Chrome浏览器),并且一般使用大于1024的端口。
这里的端口(port),是看不见摸不着的,不是交换机端口,简单理解成就是上层应用的标识或者编号。可以理解成是一个身份证对应一个人。
例如https://www.baidu.com:443 = https://www.baidu.com
http://www.baidu.com:80 = 百度一下,你就知道
http://www.baidu.com:1234 不存在或者关闭了相关的端口
网络层(Network Layer)
3.在该层的设备有一个自己学习得到的数据转发表,称为路由表。设备收到数据后,根据数据封装的目的IP进行数据转发,类似于中转站根据快递的收件地址来判断应该发送到哪个中转站。
数据链路层(Data Link Layer)
2.将数据打包成数据链路层的帧,方可在对应的数据链路层上发送,不封装就无法发送哦。3.提供差错控制
3.在园区网最常用的以太网上,在封装的帧中会写上数据链路层的地址-——MAC地址,用以太网规定的格式标注目的地的所在位置。
类似于中转站或目的地除了有山东省东营市东营蓝天汽车营业点外(红框部分),也可以表达为自营服务点546B(蓝框部分)。
Q:快递只写从哪寄到哪里,快递叔叔肯定不是拿着快递就直接头铁送到目的地,而是通过一个个中转站的接力,那么机智的快递员叔叔应该如何知道将快递发送给哪个中转站呢?
A:就需要3层和2层通力合作
首先快递系统会知道去往某个目的地就需要先发给某个中转站,然后此时就是数据链路层的MAC地址(假设在以太网上)立大功了,通过在原先的快递上添加目的MAC地址,从而发给下个中转站(不是写在快递面单上,但是会在快递的系统上进行同步),以此类推,最后到达用户手中。
全程寄件地址、收件地址都不变(源IP地址和目的IP地址),但是中间的中转站地址(MAC地址)不停地改变。
物理层(Physical Layer)
TCP/IP参考模型
OSI是1984年被ISO组织正式引入的,TCP/IP是20世纪70年代提出。
左边是实际模型样式(4层),右边是更通俗易懂的对等体模型(5层),所以4层和5层都对
应用层
FTP
telnet
带内管理in-band:是指网络的管理控制信息与用户网络的承载业务信息通过同一个逻辑信道传送;
带外管理out-of-band:网络的管理控制信息与用户网络的承载业务信息在不同的逻辑信道传送。
Step 1 配置Server的Telnet验证方式和密码。
[Server] telnet server enable //使能Telnet功能。
[Server] user-interface vty 0 4
[Server-ui-vty0-4] user privilege level 3
[Server-ui-vty0-4] protocol inbound telnet
[Server-ui-vty0-4] authentication-mode password
Please configure the login password (maximum length 16):Aa123456!
[Server]int GigabitEthernet 0/0/0
[Server-GigabitEthernet0/0/0]ip address 192.168.10.123 24
99首先要保证客户端的联通性,即客户端可以通过云ping通网络设备
可以使用cmd或者其他第三方的软件(SecureCRT、Xshell、MobaXterm)使用telnet登录
HTTP
传输层
TCP
可靠的传输协议
2.基于tcp协议的应用服务,都需要客户端和服务端之间建立连接后,才能交互数据。类似于打电话,要电话先接通了才能进行对话
客户端访问服务器的知名端口,一般都是使用随机非知名端口作为源端口。
作为序列号,用于标识一个tcp报文,一个TCP会话内的第一个tcp报文的seq一般作为随机值
确认号,用于确认已经接收到的TCP报文,一般只有在确认的时候有数值,数值位为发送方seq+1,其他时候为0
这里的标志位ack标志位和上面的ACK序列号不一样
UDP效率高(TCP效率没那么高,TCP要确认,丢了还要重传)
三次握手
PC1首先会发送一个SYN(同步位)标志位置位的报文给要建立TCP连接的PC2,此时SEQ序列号为随机值a,由于还没有收到PC发来的任何报文,因此ACK确认序列号为0
PC2收到SYN标志位报文后,会对报文进行应答(ACK标志位置位),说明已经收到该报文,并且同样会发送一个SYN标志位置位的报文给PC1,请求建立连接,此时SEQ为随机值B。
因为PC1发来SYN置位,需要消耗了一个序号为a的TCP数据,因此PC2收到后,就要使用ACK确认序列号为a+1进行确认(也表示期望PC2下次使用a+1进行发送)。
注意:ACK标志位和ACK确认序列号是两码事,不要混淆。
客户端收到服务器的主动请求建立连接和确认报文,无需在对服务器端发送的确认报文做回应,但是需要对服务端主动的的请求做应答,所以只是ACK置位,不置位SYN,SEQ=a+1(PC2期望的序列号值),ACK=b+1(期望PC1下次使用b+1序列号进行发送)
[1] 序列号计算
为什么双方都会有一个序列号 ,即PC1用seq = a,PC2用seq = b?
随机产生
因为TCP是一个全双工协议,可以各发各的,不会相互影响,因此双方各自维护一个序列号。但是Wireshark里面的SEQ是0,那是因为方便使用者识别,所以做了一个相对偏移。
1. 一个方向的序列号是seq=x,发送了1000字节,那么序列号就加上x+999
2.接收方如果全部收到了这1000字节,即收到了x+999号序列号的数据,因此回复ACK的时候,要将ACK序列号位+1,即期待ACK=x+1000序列号的数据。
3.syn标志位、fin标志位被置位,即使没有真实的数据,也算一个字节
8
一个例子
88 seq=0 ,syn置位--------------------->
<<----------------------123 seq=0 ACK=1,syn和ack置位
88 seq=1 ACK=1 ,ack置位------------------------>>>
123 seq=1 ,ACK=1 数据9字节--------------------->
123 seq=10 ,ACK=1 数据9字节--------------------->
<<----------------------88 seq=1 ACK=19
123使用seq序列号为1开始发送数据,第一次9字节,第二次还是9字节,一共发了18字节
999注意:尽可能使用非物理网卡(有线、无线)进行抓包,否则会有大量的报文,对于初学者而言简直是噩梦。
滑动窗口
TCP中并不是发送方每发一个接收方都需要确认,这样能够减少报文交互,同时减少等待时间。
双方可以通过协商一个窗口大小的方式,一方面控制数据的传输速率,另一方面可以告知发送方,发送多少数据之前无需等待接收方的确认。
1.图中空白的方格代表能有多少缓存,如果全部塞满(变成实心的方格),就不再接受
2.应用会从缓存中取走相对应的内容,从而释放内容,重新形成空白方格。
3.当PC2还有1个缓存空间(还有两个未读走),PC1只能发送一个方块的数据,这叫窗口合拢,等到缓存都读走,窗口就张开。
4.发送方叫拥塞端口cwnd,决定发送方能发多少,接收方是叫通告窗口windows,表示接收方能接受多少,当cwnd大于wondows的时候,按照通告窗口windows的大小来发送。
四次挥手
可以只断开一边,例如A--->B断开,那么A--->B不能传送