OSI模型
OSI协议是由ISO(国际标准化组织)制定的,它有三个基本的功能:提供给开发者一个必须的、通用的概念以便开发完善、可以用来解释连接不同系统的框架。
OSI将计算机网络体系结构(architecture)划分为以下七层:
物理层: 将数据转换为可通过物理介质传送的电子信号 相当于邮局中的搬运工人。(传输介质上的原始比特流传输)
数据链路层: 决定访问网络介质的方式。(物理寻址,差错检测)
在此层将数据分帧,并处理流控制。本层指定拓扑结构并提供硬件寻址,相当于邮局中的装拆箱工人。
网络层: 使用权数据路由经过大型网络 相当于邮局中的排序工人。(逻辑寻址,路由选择)
传输层: 提供终端到终端的可靠连接 相当于公司中跑邮局的送信职员。(提供端到端的连接——可靠或者不可靠)
会话层: 允许用户使用简单易记的名称建立连接 相当于公司中收寄信、写信封与拆信封的秘书。(不同机器之间用户会话的建立和管理)
表示层: 协商数据交换格式 相当公司中简报老板、替老板写信的助理。(数据的格式化,加密解密、压缩和解压缩)
应用层: 用户的应用程序和网络之间的接口。(各种应用程序,如HTTP、FTP、TELENT)
OSI的优点
1、将网络的通信过程划分为一个个小部件,有利于各个部件的开发、设计和故障排除;
2、标准化网络组件,允许多个供应进行开发;
3、通过定义在模型的每一层实现什么功能,鼓励产业的标准化
4、允许各种类型的网络硬件和软件相互通信
5、防止对某一层所做的改动影响到其他的层
TCP协议(Transmission Control Protocol,传输控制协议)
TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。
TCP是一种面向连接的,可靠的传输层通信协议。它有如下特点
(1)基于流的方式;
(2)面向连接;
(3)可靠通信方式;
(4)在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销
(5)通信连接维护是面向通信的俩个端点的,而不考虑中间网段和节点。
TCP三次握手
TCP三次即建立TCP连接,指建立一个TCP连接时,需要客户端服务端总共发送3 个包以确认连接的建立。
(1)第一次握手:Client将标志位SYN置为1(表示要发起一个连接),随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
四次挥手
所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示:
由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
UDP协议(User Datagram Protocol,用户数据报协议)
UDP用户数据报协议,是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。
UDP是一种无连接,尽力而为的传输层通信协议。它有如下特点
(1)面向报文的协议;
(2)无连接;
(3)尽力而为的通信方式;
(4)资源消耗小,处理速度快的优点;
(5)在网络状况不佳的情况下数据的丢包情况会非常严重
UDP和TCP的对比——UDP和TCP是TCP/IP体系结构运输层中的俩个重要协议
UDP:随时可以传输数据传输数据,不需要建立连接,所以可以总结为无连接的UDP。
TCP:首先进行“三报文握手”建立连接,然后数据传输,数据传输结束后需要“四报文挥手”释放连接。传输过程需要一对一的连接后再进行数据传输。面向连接的TCP
总结:UDP不需要建立连接,TCP需要建立连接后进行数据传输。
UDP:因为它不需要建立连接,所以它可以进行单播、多播和广播
TCP:数据传输是基于TCP连接的可靠信道,所以TCP仅支持单播
总结:UDP支持单播、多播和广播,TCP只支持单播
UDP:数据传输是面向报文传输
TCP:数据传输时面向字节流