网络编程tcp/ip协议与socket论述
2016-03-13邵阳学院信息工程系
邵阳学院信息工程系 严 谦 阳 泳
网络编程tcp/ip协议与socket论述
邵阳学院信息工程系 严 谦 阳 泳
【摘要】随着互联网技术的不断发展,网络通信成为当前互联网技术的重要技术,所以当前网络编程技术成为当前互联网通信发展的核心技术。网络编程主要是的通过使用套接字来实现进程间的编程,在Windows系统中的网络编程的套接字winscok,而在linux系统中最常见的套接字就是socket,本文就linux网络编程中的tcp、ip协议以及socket套接字问题进行详细的论述。
【关键词】网络编程;tcp/ip协议;socket套接字
0 引言
网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的,而中间则是通过对数据包的组装、过滤、捕获以及分析等处理工作。作为一个网络编程者,为做好网络编程设计,需要接触代码,开发工具,数据库,服务器架设和网页设计等几方面的工作,同时对于网络编程,需要重视理解TCP/IP协议构架,本文就TCP/IP协议构架以及socket套接字问题进行详细的论述。
1 网络编程概述
网络编程代码主要分为静态代码与动态代码两种,静态代码主要是服务器不解析直接发送给客户端的部分,用做布局效果,一般不用于数据库操作;而动态代码主要服务器需要解析的部分,用作数据库连接操作等。常见的编程语言有php,jsp,asp这几种语言,其中个人认为如果想快速入门的话,可以学JSP、但是为了能够以后就业的话则需要学php或jsp。
网络模型主要是用与描述网络的结构原理和工作原理,网络模型则分为OSI参考的模型与Internet网络模型两种,OSI网络模型与Internet模型最大区别就是OSI模型为七层网络结构,而Internet模型为四层结构,而网络协议用于指定层上进行的数据交换的规则,Internet的网络层协议的主要是以IP协议为主、DNS协议为辅,而Internet传输层协议则是TCP协议和UDP协议。
套接字主要的用于程序编码中操作,而套接字则是的应用程序与网络协议的接口,不同类型的程序的套接字是不同的,例如java socket主要是用于java应用程序与网络协议的接口,提供若干个类定义,java应用的利用继承网络协议的方式实现java程序的网络通信。
数据包也称为组装包,指在应用层数据或报文按照一定事先规定好的规则整合的数据集合,实际操作包括组包(打包),数据包传送,解包。数据包通过协议将数据进行组合起来,但是在实际的应用中,例如在C++编程中,通过定义一种新的数据类型的用于存储新的数据包结构,之后通过的电气物理传输将数据包传输出去,而接收端则需要对接收到的数据包进行的解析,以获取需要的信息以及数据。
2 TCP/IP协议构架
TCP/IP协议作为Internet的最基本的协议,主要有网络层的IP协议和传输层的TCP协议构成,TCP/IP协议为4层构架结构,协议负责定义电子设备如何介入互联网:TCP协议负责信息的传输问题,而IP则是负责给联网设备定义一个地址;IP层接收来自于更底层的数据包,(例如网络接口层驱动程序反馈的数据),并且将数据包发往更高层(TCP层或者UDP层);此外由于IP没对对数据包的进行处理、所以IP层的数据包不可靠。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯;如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
3 socket套接字
Socket套接字主要是用于描述IP地址与端口,作为一个通信链的句柄,其目的在于实现不同计算机设备直接的网络通信。在主机上一般都是运行了多个软件,可以同时提供多种服务,所以每一种服务都会打开一个socket并绑定到端口上,使得不同的端口能够对应不同的服务内容。Socket连接过程中主要可以分为服务期监听、客户端请求以及连接确定等三个步骤:
(1)服务器监听:用于监听服务器是否处于等待连接状态进行监控的网络状态;
(2)客户端请求,向客户端的套接字发送连接请求;所以客户端套接字必须要描述它所要连接的服务器套接字,指出相应的服务器套接字地址与端口号后,向服务器端发送连接请求;
(3)连接确定:当服务器端收到了客户端套接字所发送的连接请求,为响应客户端套接字,需要建立一个新的线程并把服务器端套接字的地址与端口号发送给客户端,当客户端确定之后,便建立的连接。
Socket套接字分为流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM),而这二者主要是针对TCP服务应用以
及UDP服务应用。用于操作socket套接字,设计者通过下面几个函数来实现:
(1)创建套接字函数:int socket(int domain, int type, int protocol);
(2)绑定地址的套接字函数:int bind(SOCKET socket, const struct sockaddr* address, socklen_t address_len);
(3)接受套接字函数:int recv(SOCKET socket, char FAR* buf, int len, int flags);
(4)发送套接字函数:int sendto( SOCKET s, const char FAR* buf, int size, int flags, const struct sockaddr FAR* to, int tolen);
(5)接受连接请求函数:int accept( int fd, struct socketaddr* addr, socklen_t* len)。同上述的5个函数便可以实现网络编程控制。
4 结束语
综合上述,通过上述对网络编程分析,重点针对TCP/IP协议以及socket套接字进行详细的论述,可见对于网络编程,主要要理解网络协议构架,并且掌握好套接字各种函数的使用,这样才能做好网络通信工作。
参考文献
[1]张洪波,陈红彬.Linux命令应用大全[M].北京:清华大学出版社,2009:25-26.
[2]赵善松.Linux常见问题解答[M].北京:人民邮电社,2001:63-68.
[3]梁如军.Redhat Linux 5网络服务[M].北京:机械工业社,2004: 100-200.
严谦(1990—),男,大学本科,现就读于邵阳学院信息系通信工程12级,研究方向:通信工程。
Network Programming tcp / ip protocol and socket discussion
Abstract:With the continuous development of Internet technology, network communications become an important technology of Internet technology, so the current network programming technology as the core technology of the current development of Internet communications. Network programming primarily achieved through the use of socket programming between processes in Windows system network programming socket winscok, while in linux system is the most common socket socket, paper linux Network Programming the tcp, ip protocol and socket socket issues are discussed in detail.
Keywords:network programming;tcp / ip protocol;socket socket
作者简介: