SOCKET与TCP/IP 关系

SOCKET与TCP/IP 关系 

Socket 是一种应用接口, TCP/IP 是网络传输协议,虽然接口相同, 但是不同的协议会有不同的服务性质。创建Socket 连接时,可以指定使用的传输层协议,Socket 可以支持不同的传输层协议(TCP 或UDP ),当使用TCP 协议进行连接时,该Socket 连接就是一个TCP 连接。Soket 跟TCP/IP 并没有必然的联系。Socket 编程接口在设计的时候,就希望也能适应其他的网络协议。所以,socket 的出现只是可以更方便的使用TCP/IP 协议栈而已。 

4.2 SOCKET对 TCP/IP 的使用 

Socket 其对TCP/IP 进行了抽象,形成了几个最基本的函数接口。比如create ,listen ,accept ,connect ,read 和write 等等。如果一个程序创建了一个socket ,并让其监听80 端口,其实是向TCP/IP 协议栈声明了其对80 端口的占有。以后,所有目标是80 端口的TCP 数据包都会转发给该程序(这里的程序,因为使用的是Socket 编程接口,所以首先由Socket 层来处理)。所谓accept 函数,其实抽象的是TCP 的连接建立过程。accept 函数返回的是socket 其实指代的是本次创建的连接,而一个连接是包括两部分信息的,一个是源IP 和源端口,另一个是宿IP 和宿端口。所以,accept 可以产生多个不同的socket ,而这些socket 里包含的宿IP 和宿端口是不变的,变化的只是源IP 和源端口。这样的话,这些socket 宿端口就可以都是80 ,而Socket 层还是能根据源/ 宿对来准确地分辨出IP 包和socket 的归属关系,从而完成对TCP/IP 协议的操作封装! 

4.3 SOCKET与 HTTP 的关系 

--一个是发动机(Socket),提供了网络通信的能力 
--一个是轿车(Http),提供了具体的方式 

1)      http 协议手机都支持,socket 不一定。 

2)      http 只能是一问一答(即以request/response 的方式连网收发信息), 而socket 可以双向通讯( 定位到某一URL 后, 就可以双方收发信息, 无需request/response) 。 

3)      Socket 可能会被防火墙屏蔽, 但http 可以穿越防火墙。 

HTTP 是基于Socket 通信的子协议, Socket 收发信息自由, 协议都可由使用者定义。 HTTP 在Socket 基础上做了协议规范, 通信只能按照特定的格式去做, 用户可在HTTP 上做自己的子协议, 如网页浏览,webservice ,soap等 



soap:是http post的一个专用版本,遵循一种特殊的xml消息格式 。 



TCP/IP 4 层模型以及每层主要功能描述如下: 

应用层(Application Layer) 

TCP/IP 组中的应用层综合了 OSI 应用层、表示层以及会话层的功能。因此,在 TCP/IP 结构中,传输层以上的任何过程都称之为应用。在 TCP/IP 中,使用套接字(socket)和端口描述应用程序通信路径。大多数应用层协议与一个或多个端口号相关联。 

传输层(Transport Layer) 

TCP/IP 结构中包含两种传输层协议。其一传输控制协议(TCP),确保信息传输过程。其二用户数据报协议(UDP),直接传输数据报,而不需要提供端对端可靠校验。两种协议对应不同的应用具有各自功能。 

网络层(Network Layer) 

TCP/IP 网络层中的主要协议是网际协议(IP)。所有网络层以下或以上的各层通信在跨越 TCP/IP 协议栈时,都必须通过 IP 完成。此外,网络层还包含部分支持性协议,如 ICMP,实施和管理路由过程。 

网络访问层(Network Access Layer) 

在 TCP/IP 结构中,网络访问层由数据链路层和物理层合并而成。TCP/IP 网络访问层并没有重新定义新标准,而是有效利用原有数据链路层和物理层标准。很多 RFC 中描述了 IP 如何使用数据链路协议并作为其接口界面,如以太网、令牌环、FDDI、HSSI 和 ATM 等。物理层中规定了硬件通信属性,但它不直接作为网络层及以上层的 TCP/IP 协议的接口。

猜你喜欢

转载自lengchaotian.iteye.com/blog/1704746