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
以上,概念性的部分与图片,皆来自网络,本人仅做简单梳理。