TCP/IP协议、socket及socket简单实现网络通讯

来源:互联网 发布:闪电网络测速工具 编辑:程序博客网 时间:2024/05/21 22:34

TCP/IP协议

TCP/IP协议是什么?

    TCP/IP协议是个名词,并不是TCP和IP放在一起说了,中文名叫做传输控制协议/互联网络协议,是一种网络通信协议,它规范了网络上的所有通信设备,数据往来格式以及传送方式(传输)。    TCP/IP协议是网络的基础,是Internet的语言。

TCP/IP和HTTP协议的关系

关于TCP/IP和HTTP协议的关系,网上有一段比较容易理解的介绍:    "我们在传输数据时,可以只使用(传输层网络层)TCP/IP协议,但是那样的话,没有应用层,便无法识别数据内容。    如果想要使传输的数据有意义,则必须使用到应用层HTTP协议。应用层提供了封装或者显示数据的具体形式"

socket(套接字层、插座)

    实际上socket就是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API,内部按照TCP/IP协议对数据封包解包,并记录生成的端口号与IP地址)。    Socket的出现只是使我们程序员能够更方便的使用TCP/IP协议栈而已,是对TCP/IP的抽象。    通过Socket,我们能更好地使用TCP/IP协议。

网络通讯的实质

    通信的两端,也就是客户端和服务器都有 Socket(IP地址和端口号两部分),所以可以说网络通信其实就是在 Socket 间的通信。    数据在两个 Socket 间通过 IO 传输 (input/output,一个请求可以看做一次IO传输)

利用socket替代HTTP做个简单的网络通讯

Socket 是纯C语言的,是跨平台的

socket通讯的原理
这里写图片描述

C版本的socket通讯

网络通讯链中,将应用层省去,用Socket做网络请求,HTTP的内容:设置服务器的信息等

    1.创建socket        使用socket函数        返回值是int ,>0就表示成功    2.创建服务器,并将我们创建的socket连接到服务器        使用connect函数,        返回值是int:0代表连接成功,其他失败)    3.向服务器发送消息        使用send函数,返回值:如果成功返回发送的字节数,如果失败返回SOCKET_ERROR    4.接收服务器返回的数据        使用recv函数,返回值:如果成功返回数据的字节数,如果失败返回SOCKET_ERROR    5.关闭连接        clock(创建的socket)

源码见链接:http://git.oschina.net/.coding/socketmonihttp

iOS移动端有一个封装的很好的socket套接字库:GCDAsyncSocket


以上,概念性的部分与图片,皆来自网络,本人仅做简单梳理。