网络的五层模型
对网络协议的划分有很多种,有七层的,有四层的,然而最普遍和最好理解的是网络协议的五层模型,它们分别是:
- 物理层:就是把电脑连接起来的屋里手段。他主要规定了网络的一些电气特性,作用是负责传送 0 和 1 的电信号。
- 数据链路层:
- 数据链路层为网络层提供可靠的数据传输
- 基本数据单位为帧
- 主要的协议:以太网协议
- 两个重要设备名称:网桥和交换机
- 网络层
- 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能
- 基本数据单位为 ip 数据包
- 包含主要协议:ip 协议,ICMP 协议,ARP 协议
- RARP 协议
- 主要的设备:路由器
- 传输层
- 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题
- 包含主要协议:tcp 和 udp
- 重要设备:网关
- 引用层
- 数据传输基本单位为报文
- 包含的主要协议:FTP,Telent,DNS,SMTP,POP3 协议,HTTP 协议
TCP 和 UDP 的区别
UDP 和 TCP 的主要区别在于 UDP 不一定提供可靠的传输。UDP 协议不能保证数据确保无误到达目的地。UDP 在许多方面非诚有效。当某个程序的目标是尽快地传输尽可能的信息时(其中任意给定数据的重要性相对较低),可使用 UDP。ICQ 短信息使用 UDP 协议发送消息。
TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。记住,较低的网络层会将每个数据包视为一个独立的单元,因此,数据包可以沿完全不同的路径发送,即使它们都是同一消息的组成部分。这种路由与网络层处理分段和重新组装数据包的方式非常相似,只是级别更高而已。
TCP 的三次握手
所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。
第一次握手
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。
第二次握手
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1:即X+1。
第三次握手
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1。并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1。
TCP 四次挥手
TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。