计算机网络大作业终于落下帷幕,经过两周的学习、查资料,终于完成了老师布置的任务。下面对计算机网络进行一个总结,首先将从socket通信的最基础开始,然后实现客服端到服务端的通信、客户端和客户端之间的通信,最后实现一个模仿QQ聊天的小程序。
计算机程序如何通过网络进行相互通信呢?首先要理解什么是计算机网络,计算机网络由一组通过通信信道相互连接的机器(主机和路由器)组成,通过协议(protocol)来达成相互通信程序间的一种约定。下面这张图片很好的展示了应用程序通信的过程,应用程序通过套接字接口对UDP协议和TCP协议提供的服务进行访问,经过TCP协议层和IP协议层,通过网络等,最后将数据传输到另一端的应用程序。
一个TCP/IP网络
在TCP/IP协议中,有两部分信息来定位一个指定的程序:互联网地址和端口号。从上图可以看出,通过TCP/IP等协议,使两个主机间的一系列通信信道和路由器看起来像是单独一条主机到主机的信道。IP协议将数据发送到指定的主机,TCP、UDP协议通过端口号,来区分同一主机中的不同应用程序。
客户端和服务器:客户端是通信的发起者,首先需要知道服务器的IP地址和端口号,服务器通过accpet()函数一直监听被动等待客户端发起通信,并对其做出响应。
上面说了一些计算机网络的基础知识,下面进入正题,什么是套接字?
socket(套接字)是一种抽象层,应用程序通过它来发送和接收数据。使用socket可以将应用程序添加到网络中,并与处于同一个网络中的其他应用程序进行通信,一个TCP/IP套接字由一个互联网地址,一个端到端协议,以及一个端口号唯一确定。(socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。)