一、网络模型:
第五层:应用层 抽象语言-->编码
第四层:表示层 编码--》二进制
第三层:网络层 internet 协议--IP --IP地址
第二层:介质访问控制层 --- 物理硬件控制 --mac地址
第一层:物理层
二、如何将网络变大:
- 增加节点(终端)----HUB 集线器
- 距离延长 100米 中继器(放大器)--有限延长
三、集线器的缺点:
- 不安全 2、效率极低 3、地址 4、冲突
①地址→MAC地址→48位二进制 ; 全球唯一 ; 出厂烧录到网卡芯片 ; 16进制显示
②冲突→CSMA/CD 载波侦听多路访问/冲突检测→ 排队 →导致效率更低
四、构建一个网络的需求:
- 无限的传输距离
- 无冲突:所有节点均可同时收发自己的数据
- 单播:一对一
①交换机:工作在二层 → 介质访问控制层
交换机工作过程:当一个数据电流进入交换机后,交换机先将电流识别成二进制,之后首先查看源MAC地址;然后将该MAC与该进入接口映射记录到本地的MAC表中;之后再关注目标mac地址,查询本地的MAC表,若表中存在目标MAC的记录,将单独向该接口复制流量(单播);若没有记录,将洪泛该流量。
②洪泛:除进入接口外的其他接口复制
五、网络地址:
1、ipV4地址:32位二进制构成;点分十进制显示
例:192.168.1.1 255.255.255.0
2、ARP:地址解析协议 → 通过广播(目标MAC为全f,将请求消息发送整个洪泛范围)
六、构建一个网络的逻辑:
※大→无限距离、无冲突、单播→交换机→MAC→洪泛→洪泛的范围→路由器→IP地址→
ARP→广播→广播域(洪泛域)
七、TCP与UDP的区别
TCP面向连接的, 传输数据时,需先进行三次握手,建立连接,UDP是无连接的,发送数据之前不需要建立连接
TCP通过确认和重传机制,提供可靠的服务。即通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达,而UDP不保证可靠传输,只是尽可能得交付
TCP面向字节流,即将数据看成一连串无结构的字节流。UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
(1)、TCP3次3次握手和四次断开:
首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。
①为何三次握手
三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收机能正常。
第一次握手:Client什么都不能确认;Server确认了对方发送正常
第二次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己接收正常,对方发送正常
第三次握手:Client确认了:自己发送、接收正常,对方发送、接收正常;Server确认了:自己发送、接收正常,对方发送接收正常
所以三次握手就能确认双发收发功能都正常,缺一不可。
②为何要发送特定的数据包
三次握手的另外一个目的就是确认双方都支持TCP,告知对方用TCP传输。
第一次握手:Server 猜测Client可能要建立TCP请求,但不确定,因为也可能是Client乱发了一个数据包给自己
第二次握手:通过ack=J+1,Client知道Server是支持TCP的,且理解了自己要建立TCP连接的意图
第三次握手:通过ack=K+1,Server知道Client是支持TCP的,且确实是要建立TCP连接
SYN是标志位,SYN=1表示请求连接;
ACK其实就是ack后面加上的那个数,真正发送的时候不单独发ACK,只发ack,
【注意】中断连接端可以是Client端,也可以是Server端。
假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
【注意】 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。
【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACk报文。
八、名词注解
1、UDP:用户数据报文协议
非面向连接的不可靠传输协议;---仅完成传输的基本工作,没有额外的功能
2、TCP:传输控制协议
面向连接的可靠传输协议 --- 在完成了传输基本工作上,保障传递的可靠性
面向连接:在通讯之处使用三次握手建立端到端的虚链路;
可靠传输4种机制:确认ACK 重传 排序 流控(滑动窗口)
3、IPV4报头:
4、ARP:地址解析协议 通过一种地址来获取另一种地址
5、AARP正向ARP:已知同一广播域内,对端设备的IP地址,通过二层全F广播寻找来获取该设备的MAC地址;
6、反向ARP:通过本地的MAC地址获取本地的IP地址
8、无故ARP:设备在刚使用ip地址时,将主动向外进行正向ARP请求,但被请求ip为本地的ip;--用于地址冲突检测
9、OSI (系统互联参考模式)7层参考模型:非实际网络使用,仅做参考
TCP/IP协议栈道(模型):4层或5层
10、PDU:协议数据单元 各层数据的单位
应用层 报文
传输层 段
网络层 包
数据链路层 帧
物理层 比特
封装:数据从高层向低层的加工过程,过程中数据添加每层的报头,数据变大;
解封装:对封装的逆向行为,数据识别转发过程;
11、MAC地址 --交换机
12、IP地址--路由器