`

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 协议的接口。
分享到:
评论

相关推荐

    基于TCP/IP的socket编程

    "基于TCP/IP的socket编程"是一个深入探讨如何使用socket接口进行网络通信的主题。Socket编程允许应用程序通过网络发送和接收数据,它是互联网上不同计算机之间交互的核心机制。 在给定的描述中,我们看到一个创新的...

    Socket服务端客户端以tcp/ip协议发送接收报文

    本教程将详细讲解如何利用Java Socket实现基于TCP/IP的服务端和客户端之间的报文发送与接收。 TCP(传输控制协议)是一种面向连接、可靠的传输协议,它确保了数据包的有序和无损传输。IP(互联网协议)则是互联网上...

    Socket Tcp/IP

    Socket可以理解为应用程序与网络协议交互的接口,而TCP/IP则是一组通信协议的集合,包括了传输控制协议TCP和网际协议IP,是互联网通信的核心。 TCP/IP模型分为四层:应用层、传输层、网络层和数据链路层。Socket...

    基于TCP/IP协议的Socket编程

    TCP/IP协议是网络通信协议的基础,它规定了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据传输格式以及传送方式。TCP/IP协议的基本传输单位是数据包(datagram),TCP协议负责把数据分成若干个...

    Can't create TCP/IP socket(24).原因及解决办法

    标题中的“Can't create TCP/IP socket(24)”是一个典型的错误信息,表示在尝试创建TCP/IP套接字时遇到了问题,错误代码为24。在Linux或Unix系统中,错误代码24通常与"Too many open files"相关,意味着当前进程已经...

    C# TCP/IP通信小例子

    在C#中,我们通常使用System.Net命名空间下的Socket类来处理TCP/IP通信。 首先,让我们来看看服务端的实现。服务端需要监听特定的端口,等待客户端的连接请求。在C#中,可以创建一个Socket实例,并调用Bind方法绑定...

    GPRS.net.zip_.net socket TCP/IP_GPRS网络调试工具_TCP 调试_tcp/ip调试_网络调试

    在.NET框架下,开发者可以通过Socket API来实现网络通信,进行TCP/IP协议的调试,这对于网络应用的开发与优化至关重要。本文将围绕“GPRS网络调试”这一主题,深入探讨.NET Socket编程,以及如何利用相关工具进行TCP...

    Java+TCP/IP+Socket编程++原书第2版.pdf

    TCP/IP(Transmission Control Protocol/Internet Protocol)协议栈是互联网通信的基础,而Socket是Java中实现TCP/IP通信的关键组件。本篇将深入探讨Java如何利用TCP/IP协议通过Socket进行网络编程。 TCP/IP协议族...

    TCP/IP Socket in C/Java

    两本TCP/IP socket编程书,分别是C语言和Java语言版的。都是文字版的pdf文档。 1. TCP/IP Sockets in Java (2th Edtion) 2. TCP/IP Sockets in C *Series Editor: Michael J. Donahoo

    Socket -Tcp/ip编程例子

    Socket编程在IT领域中是网络通信的基础,尤其在TCP/IP协议栈中扮演着至关重要的角色。TCP/IP(Transmission Control Protocol/Internet Protocol)是一组通信协议,用于规定互联网上设备之间的数据传输方式。在这个...

    TCP/IP通信c#例程

    通过实践这个C# TCP/IP通信的例子,你可以深入理解TCP/IP协议的工作原理,学习如何在C#中使用Socket类进行网络编程,这对于开发涉及网络通信的软件至关重要。无论是创建简单的聊天应用,还是复杂的分布式系统,TCP/...

    ARM linux 和上位机windows10进行TCP/IP网络通信

    在本文中,我们将深入探讨如何实现ARM Linux与Windows 10上位机之间的TCP/IP网络通信。这个主题涉及多个技术领域,包括操作系统间的通信、网络编程以及特定的编程语言和库。以下是一份详细的概述: 1. **TCP/IP协议...

    基于socket应用的TCP/Ip通讯

    本文将深入探讨基于Socket应用的TCP/IP通讯,包括其工作原理、实现方式以及如何通过服务端和客户端进行交互。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议。它提供全双工通信,...

    TCP/IP源码 完整的TCP/IP代码程序

    Winsock提供了与TCP/IP协议族接口的API,如`socket()`用于创建套接字,`bind()`绑定本地端口,`listen()`开始监听连接,`accept()`接受连接请求,`connect()`发起连接,`send()`和`recv()`进行数据收发等。...

    android studio Socket客户端服务器通信 TCP/IP通信

    android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信android studio Socket客户端服务器通信 TCP/IP通信

    socket与TCP/IP

    简单的socket操作类,服务于客户端都可以定义,简单的TCP/ip的实现

    C# tcp/ip Socket Programmer

    《C# TCP/IP Socket程序员实战指南》是一本深入讲解如何在C#环境下使用TCP/IP协议进行网络编程的书籍。在当今互联网技术飞速发展的时代,掌握网络编程技能,特别是使用C#进行TCP/IP通信,对于软件开发者来说至关重要...

    TCP/IPsocket的简单编程

    TCP/IP套接字编程是网络通信的核心技术,广泛应用于各种操作系统,包括Windows和Linux。本文将深入探讨在...通过实践和研究"socket1"这样的例子,你将能够深入理解TCP/IP通信的内在机制,并逐步提升你的编程能力。

Global site tag (gtag.js) - Google Analytics