光会使用Socket的接口(API)去进行基础编程是远远不够的,我们还必须还要了解整个网络通信的传输流程。OSI开放式系统互联,全称(Open System Interconnection),OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
何为Socket?
第一篇文章我们首先简单介绍一下什么是Socket。在百度百科中是这样介绍,网络中,通过开辟一个双向的通信连接来实现数据的交换,这个连接的一端称为一个Socket。
建立一个网络通信连接至少要一对端口号(socket),socket本质是编程接口(API),是对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
Socket实际上是应用层与传输层之间的桥梁。
OSI七层模型与TCP/IP4层模型
OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
TCP/IP四层模型分别为网络接口层(也可称理解为数据链路层和物理层)、互联网层(也称网络层)、传输层、应用层。
目前来讲OSI七层模型基本上被TCP/IP 4层模型淘汰。在当今世界上没有大规模使用。因此我们本文只着重介绍TCP/IP四层模型。
何为传输层?
传输层(Transport Layer),是TCP/IP模型层中最重要,也是最关键的一层。
传输层主要为两台主机上的应用提供端对端的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。(一个端口对应一个软件)
传输层的TCP和UDP可以接收来自多个应用程序的数据流,用端口号标识他们。然后把他们送给Internet网络层处理。同时TCP和UDP接收来自Internet网络层的数据包,用端口号区分他们,然后交给不同的应用程序。
传输层的两大协议:TCP(传输控制协议)UDP(用户数据包协议)
TCP是可靠面向连接传输协议,而UDP是不可靠或者说无连接协议
UDP更像是手机发送短信,不需要关心对方号码是否是空号(网络不可到达),是否是开机状态。只管发出去即可,免不关心对方是否收到(丢包)。
而TCP更像是打电话,首先要确认对方号码是否是空号,对方是否开机(网络可以到达)、是否有信号。最后还要确认对方是否有接听(通信连接)。
传输层的由来?
网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序。后续文章中我们会介绍网络层ip与链路层mac。
网友评论