协议就是约定,大家都使用同一套协议,通信才不会乱。能让大家都遵守同一个约定是了不得的,而tcp/ip协议,就是一套广泛使用的协议。
tcp/ip协议是一个协议栈,也就是有分层结构,各层各司其职,其中有一层叫传输层,引出一个协议叫tcp协议。tcp协议基于ip协议(ip协议是ip层,是传输层的下层,也叫网络层),增加了一个端口。
ip定位到设备,tcp(端口)定位到设备上的进程(应用)。所以,使用tcp协议就能在两个进程间进行通信。
这里没有高深的东西,还是基本面--如何使用。简单看看怎么使用tcp协议来完成对话,用python比较好演示,其中涉及到的行为在不同语言中都有相应的实现。
基本上,tcp协议的实现,离不开socket。
socket,套接字,可以变身为网络结点(比如两个进程)的通道,有了它,就能通信。
服务器程序,简单实现:

客户端程序,简单实现:

执行起来,效果如下:

tcp通信,是流式的通信,先建立连接后使用,而有连接让数据的完整性得以保证。
以上程序演示了tcp协议的使用,包括函数socket、bind、listen、accept、connect、send,等等。如果再深入一点,还可以了解socket属性的设置(setsocketopt)、非阻塞的使用、select的使用等,这里不细说,谁用谁研究。

网友评论