一 . osi七层协议
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
二 . tcp三次握手和四次挥手
我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用进程之间的通信。
UDP: 面向无连接, 传输速度快, 数据不安全, 以包的形式传输
TCP: 面向有连接, 传输速度慢, 数据安全, 以字节流的形式传输
# 三次握手: 第一次: C发送给S告诉要连接了. 第二次: S发给C告诉已经收到C的信息. 第三次: C收到S的反馈信息后,告诉S已收到 # 四次挥手 第一次: C告诉S哟啊断开了. 第二次: S告诉C先等一下,看看管道里的数据是否传完. 第三次: S告诉C已经传完,可以断了. 第四次: C告诉S已经收到反馈
三 . socket在其中的关系
我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。
能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。
四 . TCP和UDP下的socket差异对比图
上面的图只是让大家感受一下TCP和UDP协议下,socket工作流程的不同,两者之间的差异是tcp需要连接,udp不需要.
tcp协议: 面向连接,数据可靠,传输效率低,面向字节流
udp协议:面向无连接, 数据不可靠, 传输效率高, 面向报文