OSI七层模型
它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。每一层的功能是独立的。它利用其下一层提供的服务并为其上一层提供服务,而与其他层的具体实现无关。这里所谓的“服务”就是下一层向上一层提供的通信功能和层之间的会话规定,一般用通信原语实现。两个开放系统中的同等层之间的通信规则和约定称之为协议。通常把1~4层协议称为下层协议,5~7层协议称为上层协议。
传输层:定义了一些传输数据的协议和端口号(如HTTP的端口80等),TCP(传输控制协议,传输效率低,可靠性强,可以用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做报文段。
会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)
传输层协议和传输协议一样吗?
答:传输层(TransportLayer)是OSI中最重要,答:最关键的一层,是唯一负责总体的数据传输和数据控制的一层.传输层提供端到端的交换数据的机制,检查分组编号与次序。传输层对其上三层如会话层等,提供可靠的传输服务,对网络层提供可靠的目的地站点信息.
传输控制协议(TCP)(重点了解)
TCP工作原理 :TCP的连接建立过程又称为TCP三次握手。
首先客户端向服务器发起一个建立连接的同步(SYN)请求;
服务器在收到这个请求后向客户端回复一个同步/确认(SYN/ACK)应答;
客户端收到此应答确认之后再向服务器发送一个确认(ACK),,此时TCP连接成功建立.
一旦初始的三次握手完成,在发送和接收主机之间将按顺序发送和确认数据段,数据传输完成之后,关闭连接之前,TCP使用类似的握手过程验证两个主机是否都完成发送和接收全部数据。
它可以提供可靠的、面向连接的网络数据传递服务。传输控制协议主要包含下列任务和功能。
用户数据报协议(UDP)(重点了解)
UDP全称是User Datagr2am Protocol,中文名为用户数据报协议。UDP 提供无连接的网络服务,该服务对消息中传输的数据提供不可靠的、最大努力传送。这意味着它不保证数据报的到达,也不保证所传送数据包的顺序是否正确。 同学们也许会问:“既然UDP是一种不可靠的网络协议,那么还有这种协议的出现是为什么呢?”其实在有些情况下UDP可能会变得非常有用。因为UDP具有效率优势。虽然TCP中植入了各种安全保障功能,正因为有安全你的保障,所以对效率的保障就会很低,在实际执行的过程中会占用大量的系统开销,无疑效率受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大地降低了执行时间,使效率得到了保证。
UDP(User Datagram Protocol)用户数据报协议 它是定义用来在互连网络环境中提供包交换的计算机通信的协议, 此协议默认认为网路协议(IP)是其下层协议。 UDP是TCP的另外一种方法,象TCP一样,UDP使用IP协议来获得数据单元(叫做数据报),不象TCP的是, 它不提供包(数据报)的分组和组装服务。 而且,它还不提供对包的排序,这意味着,程序程序必须自己确定信息是否完全地正确地到达目的地。 如果网络程序要加快处理速度,那使用UPD就比TCP要好。 UDP提供两种不由IP层提供的服务,它提供端口号来区别不同用户的请求,而且可以提供奇偶校验。 在OSI模式中,UDP和TCP一样处于第四层,传输层。HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作, 并返回网络上传送回的结果。
HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。 (HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。) SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。 HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。
Socket(重点)
Socket原意为插座,意译为套接字
本地上的两个进程如何通信?
内存共享
消息队列
管道 NSPipe NSTask
RPC remote protocol control
本地Socket
网络上的两个进程如何通信?
本地进程间通信(IPC)通过PID可以唯一确定彼此,然后通过共享内存,消息队列等来通信。
网络上的两个进程确定彼此需要IP与端口号,通过传输层(TCP/UDP)协议进行通信 socket的特点—>在TCP/UDP 加一个端口绑定
由于端口号是被进程独占,因此socket通信经常与进程通信画上等号
假设电脑是一个大插座,有不同的插座型号,socket就是遍布在上面的插孔,可以为不同的插头提供服务 这个比喻不恰当的地方是一个插孔可以让多个插头插进来 反过来 上述比喻中,服务端进程即为服务本身,区别一台主机的不同服务则是通过端口来区分 因此只要是在这个特定的端口建立起来的TCP/IP连接就应该通往对应的进程 所以唯一确定这个socket的前提是找到这个插板(主机IP),找到这个插孔(端口) Socket通信就是一种确定了端口号的TCP/IP通信 上面那句话写成这样也要认识: Socket通信与IP通信差别就是端口确定,协议确定
端口的打开是双方的,很多人在C/S结构的TCP连接中只注意到S的端口(监听的),实际上C也开了一个端口,而C端的端口是动态端口,TCP连接建立的时候,C端的端口会在三次握手结束后确定,动态打开一个,这个端口不受用户/程序员的控制
服务端socket通信步骤
提供一些服务
将这个服务与自己的IP地址、端口绑定
监听任何到这个IP+端口的TCP请求
接受/拒绝 建立这个TCP连接
读写 数据
断开TCP连接
BSD提供了一套底层API来处理这些过程
目前基本上互联网的所有服务都基于socketAPI,所以socket通信技术的基础。