网络编程基础.pdf
《网络编程基础.pdf》由会员分享,可在线阅读,更多相关《网络编程基础.pdf(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3 Sept.2008 Neusoft Confidential网络编程基础网络编程基础一一.TCP/IP概述概述应用层物理层数据链路层网络层传输层会话层表示层OSI参考模型应用层网络层传输层网络接口层TCP/IP参考模型1.1 分层模型分层模型应用层应用层(Application Layer)在应用层用户调用程序通过TCP/IP互联网来访问可行的服务。传输层传输层(Transport Layer)传输层负责提供应用程序之间的通信服务。这种通信又称为端到端通信。传输层管理信息的流动,提供可靠的传输服务,以确保数据到达无差错、无乱序。为了达到这个目的,传输层协议要进行协商,让接收方回送确认信息及
2、让发送方重发丢失的分组。传输层协议软件把要传输的数据流划分为分组,把每个分组连同目的地址交给网络层去发送。网络层网络层(Internet Layer)网络层负责选择主机之间通信用数据报的传输路径,即路由。网络接口层网络接口层(Network Interface Layer)网络接口层是TCP/IP协议软件的最底层,负责将二进制流转换为数据帧,并进行发送和接收。应用层网络层传输层网络接口层TCP/IP参考模型1.2 消息消息封装封装1.3 TCP/IP协议族协议族1.4 TCP/IP核心协议核心协议TCP(Transmission Control Protocol)传输控制协议,基于连接的服务U
3、DP(User Datagram Protocol)用户数据报协议,无连接的服务IP(Internet Protocol)Internet协议,信息传递机制1.4.1 TCP协议协议TCPTCP向应用层提供可靠的面向对象的数据流传输服务,TCP数据传输实现了从一个应用程序到另一个应用程序的数据传递。它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信),应用程序通过向TCP层提交数据接发送/收端的地址和端口号而实现应用层的数据通信三次握手TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后进行数据通信,最后拆除连接三个过程。TCP在建立连接时又
4、分三步走:第一步:主机A向主机B发送一个包含同步标志的TCP报文。第二步:主机B在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示主机B的请求被接受。第三步:主机A也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。1.4.1 TCP协议协议 SYN J SYN K,ACK J+1 ACK K+1 三次握手三次握手UDPUDP即用户数据报协议,是一种面向无连接的不可靠传输协议,不需要通过3次握手来建立一个连接,同时,一个UDP应用可同时作为应用的客户或服务器方。由于UDP协议并不需要建立一个明确的连接,因此建立UDP应用要比建立TCP应用简单得多。
5、UDP比TCP协议更为高效,也能更好地解决实时性的问题,如今,包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都使用UDP协议。1.4.2 UDP协议协议二二.Socket编程编程独立于具体协议的网络编程接口独立于具体协议的网络编程接口在在TCP/IP模型中,主要位于传输层和应用层之间模型中,主要位于传输层和应用层之间应用层程序应用层程序IP数据链路层与物理层数据链路层与物理层TCPUDP流套接字接口流套接字接口数据报套接字接口数据报套接字接口原始套接字接口原始套接字接口2.1 什么是什么是Socket套接字是一个通信终结点,它是套接字是一个通信终结点,它是Socket应用程序用来在
6、网应用程序用来在网络上发送或接收数据包的对象络上发送或接收数据包的对象套接字具有类型,与正在运行的进程相关联,并且可以有套接字具有类型,与正在运行的进程相关联,并且可以有名称名称套接字一般只用同一种高层协议进行通信。也就是说,不套接字一般只用同一种高层协议进行通信。也就是说,不可能通信的一端用可能通信的一端用TCP,而另一端用,而另一端用UDP2.2 什么是套接字什么是套接字应用程序应用程序A套接字套接字A应用程序应用程序B套接字套接字B套接字通信模型套接字通信模型在在Linux中套接字中套接字(socket),是一种特殊的,是一种特殊的I/O接口,它接口,它也是一种文件描述符。是一种常用的进
7、程之间通信机制,通也是一种文件描述符。是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进程之间的通信,而且通过网过它不仅能实现本地机器上的进程之间的通信,而且通过网络能够在不同机器上的进程之间进行通信。络能够在不同机器上的进程之间进行通信。每一个每一个socket用一个相关描述用一个相关描述协议、本地地址、本地端协议、本地地址、本地端口、远程地址、远程端口口、远程地址、远程端口来表示。来表示。socket也有一个类似于打也有一个类似于打开文件的函数调用,该函数返回一个整型的开文件的函数调用,该函数返回一个整型的socket描述符,描述符,随后的连接建立、数据传输等操作都是通过随后的连
8、接建立、数据传输等操作都是通过socket来实现的。来实现的。2.2 什么是套接字什么是套接字2.3 Scoket类型类型 流式套接字(流式套接字(SOCK_STREAM)流式套接字使用流式套接字使用TCP协议,提供面向连接的通信流;协议,提供面向连接的通信流;数据报套接字(数据报套接字(SOCK_DGRAM)数据报套接字使用数据报套接字使用UDP协议,提供面向无连接的服务;协议,提供面向无连接的服务;原始套接字(原始套接字(SOCK_RAW)原始套接字允许对底层协议如原始套接字允许对底层协议如IP或或ICMP进行直接访问;进行直接访问;2.4 地址与端口地址与端口在网络上,一个在网络上,一个
9、Socket的标识主要借助于地址和端口来描述的标识主要借助于地址和端口来描述地址指该套接字所在计算机的网络地址,可以为域名或地址指该套接字所在计算机的网络地址,可以为域名或IP地地址的形式址的形式同一机器上可以运行多个网络应用程序,每个应用程序都有同一机器上可以运行多个网络应用程序,每个应用程序都有自己的套接字用以进行网络通信,此时如果只有地址标识套接自己的套接字用以进行网络通信,此时如果只有地址标识套接字,则当一个通信包到达机器时,将无法确定究竟是哪个应用字,则当一个通信包到达机器时,将无法确定究竟是哪个应用程序的套接字需要接收此信息。由此增加了端口的概念,以协程序的套接字需要接收此信息。由
10、此增加了端口的概念,以协助区分同一机器上不同应用程序的套接字助区分同一机器上不同应用程序的套接字端口用于标识进程,同一机器上不同的网络应用程序各有不端口用于标识进程,同一机器上不同的网络应用程序各有不同的端口,这样,通过“网络地址同的端口,这样,通过“网络地址+端口号”的标识方法,便端口号”的标识方法,便唯一标识了机器上的应用程序了唯一标识了机器上的应用程序了某些端口是专门为公共服务保留的(某些端口是专门为公共服务保留的(Ftp:21,http:80),除),除非程序是要提供这些服务,否则应尽量避免使用这些端口。非程序是要提供这些服务,否则应尽量避免使用这些端口。端口端口1024以前的端口号都
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程 基础
限制150内