**## OSI七层参考模型(Open Systems Interconnection Reference Model)
1979年由(ISO)国际标准化组织颁布的,对于不同系统不同软件产生数据时定义了同一的标准。
7.应用层(Physical layer)
实现人机交互的界面,面向应用程序的接口
即不同应用程序产生并处理不同数据,对相应的数据要有对应的协议或者服务。(例如:HTTP、DHCP、DNS、SMTP等)
6.表示层(Data link layer)
主要职能是翻译;将逻辑语言转化为机器语言(二进制)。通常还会进行数据的编码解码和加密解密
5.会话层(Session layer)
针对传输的每一种数据建立一个会话虚链接(防止数据之间产生干扰)
至此上三层为控制层面,下三层为数据层面
4.传输层(Transport layer)(可靠性 流量实时性不高 对数据丢失敏感 流量传输量不大)大部分使用不可靠传输 )
传输层主要就是区分流量和定义传输方式
1.区分流量 端口号(0-65535)
端口分类:静态端口号(知名端口号):1-1023
动态端口号:1024-65535
静态端口:每个端口号定义了特定的流量。 特点:端口号和流量之间存在一一对应并绑定的关系
动态端口:大多数服务使用随机的动态端口号进行区分。 特点:端口号与流量之间存在一一对应的关系(并未绑定)
常见端口号:
• 域名系统 (DNS)— TCP/UDP 端口 53
• 超文本传输协议 (HTTP) — TCP 端口 80
• HTTPS----TCP 端口 443
• 简单邮件传输协议 (SMTP)— TCP 端口 25
• 邮局协议 (POP)— TCP 端口 110
• Telnet — 进程访问服务 TCP 端口 23
• SSH-----TCP 端口 22
• 动态主机动置协议 (DHCP)— UDP 端口 67(sever) 和端口 68(client)
• 文件传输协议 (FTP)— TCP 端口 20 和端口 21
2.定义数据的传输方式:可靠传输(TCP,Transmission Control Protocol)和不可靠传输(UDP,User Datagram Protocol)
TCP:传输控制协议,是一个面向连接的可靠传输协议
保证可靠性在于确认和重传机制
面向连接是在数据传输之间进行协商即三次握手和四次断开,确保数据能在双方之间收取和发送
保证面向连接(TCP三次握手机制):三次握手前两个包时可靠传输第二个包对第一个包进行确认 第三个包对第二个包进行确认 最后一个包对自己进行隐式确认 (显示确认 隐式确认)
三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。
刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。
进行三次握手:
第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN。此时客户端处于 SYN_SENT 状态。
首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。
第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD 的状态。
在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。
第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接。
为什么一定要三次握手?
第一次握手:客户端发送网络包,服务端收到了。
这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。
这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
第三次握手:客户端发包,服务端收到了。
这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。
TCP会话断开机制(四次断开/四次挥手):
第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态。
即发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN_WAIT1(终止等待1)状态,等待服务端的确认。
第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。
即服务端收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),服务端进入CLOSE_WAIT(关闭等待)状态,此时的TCP处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进入FIN_WAIT2(终止等待2)状态,等待服务端发出的连接释放报文段。
第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。
即服务端没有要向客户端发出的数据,服务端发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),服务端进入LAST_ACK(最后确认)状态,等待客户端的确认。
第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态,服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。
即客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态。
为什么要四次挥手?
因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四次挥手
TCP优化机制:重排序机制和滑动窗口机制
应用环境:web浏览器、电子邮件、FTP等协议
UDP:用户数据报协议,是一个非面向连接的不可靠传输协议
PDU:数据段(segment)主要为Source Port和Destination Port
3.网络层(Network layer)
主要功能为数据的编码和寻址(路由)
A类地址:第一位固定为0
0XXX XXXX— 0-127(1-126),子网掩码默认为255.0.0.0
- 网段数量:2^7 = 128
- IP地址数量:2^24 - 2 = 16,777,214(减去网络地址和广播地址)
B类地址:前两位固定为10
10XX XXXX—128-191,子网掩码默认为255.255.0.0 - 网段数量:2^14 = 16,384
- IP地址数量:2^16 - 2 = 65,534(减去网络地址和广播地址)
C类地址:前三位固定为110
110X XXXX—192-223,子网掩码默认为255.255.255.0 - 网段数量:2^21 = 2,097,152
- IP地址数量:2^8 - 2 = 254(减去网络地址和广播地址)
D类地址:前四位固定为1110
1110 XXXX—224-239,组播地址无子网掩码 - 网段数量:不适用网段的概念,用于多播通信。
- IP地址数量:不适用IP地址数量的概念,用于多播通信。
E类地址:前四位固定为1111
1111 XXXX—240-255,科研地址 - 网段数量:不适用网段的概念,被保留为未来使用。
- IP地址数量:不适用IP地址数量的概念,被保留为未来使用
特殊IP:
1.0.X.X.X 无效地址(保留地址),0.0.0.0 无效地址 占位
2.127.0.0.1 本地测试 (127.X.X.X 测试地址)
3.网络号,网络位丌发, 主机位全为0 的地址(描述一个网段)
192.168.1.1 255.255.255.0
192.168.1.0 255.255.255.0
4.受限广播地址,255.255.255.255
192.168.1.1 255.255.255.0
192.168.1.255 255.255.255.0
5.定向(直接)广播地址,网络位丌发,主机位全为1
6.本地链路地址:link-local { 169.254.0.0 255.255.0.0 }
单播:一对一数据传输
组播:一对多数据传输
广播:一对所有数据传输
PDU:数据包(Packet) 主要为Source address和Destination address
2.数据链路层(Data link layer)
广域网(WAN)PPP HDLC FR(帧中继) ATM-异步传输 (cell,信元)串线传输–带宽太低
局域网(LAN)Ethernet以太网,二层就大部分用以太网封装
城域网(MAN)802.1Q隧道技术
三类网络分类是依照技术分类的并非物理范围
LLC:逻辑链路控制子层
MAC:介质访问控制子层(只适用于局域网以太网技术。广域网的ppp技术点对点传输)
MAC地址又称物理地址、硬件地址、烧录地址 48个二进制(12个十六进制)
书写:
减分十六迚制书写:60-F2-62-3C-E3-53
点分十六迚制书写:60F2.623C.E353
MAC构成
PDU:数据帧(Frame) 主要为Source MAC和Destination MAC
1.物理层(Physical layer)
应用物理传输介质
将数据串行化(将二层数据帧转变为0101的二进制在介质中传输)
PDU:比特流 bit**