20191226刘煊赫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

TCP/IP和网络编程

一、网络编程简介

二、TCP/IP协议

TCP/IP是互联网的基础。TCP代表传输控制协议。IP代表互联网协议。目前有两个版本的IP,即IPv4IPv6IPv4使用32位地址,IPv6则使用128位地址。TCP/IP的组织结构分为几个层级,通常称为TCP/IP堆栈。

顶层是使用TCP/IP的应用程序。用于登录到远程主机的ssh、用于交换电子邮件的mail、用于web页面的http等应用程序需要可靠的数据传输。通常,这类应用程序在传输层使用TCP。另一方面,有些应用程序,例如用来查询其他主机的ping命令,则不需要可靠性。实际数据传输发生在互联网(IP)和链路层,这些层将数据包分成数据帧,以便在物理网络之间传输。

三、IP主机和IP地址

主机是支持TCP/IP协议的计算机或设备。每个主机由一个32位的IP地址来标识。为了方便起见,32位的IP地址号通常用点计法表示,例如:134.121.64.1,其中每个字节用点号分开。主机用主机名来表示,如dns1.ecc.wsu.edu。实际上,应用程序通常使用主机名而不是IP地址。

IP地址分为两部分,即NetworkID字段和HostID字段。根据划分,IP地址分为A~E类。发往IP地址的数据包首先被发送到具有相同networkID的路由器。

四、IP地址

IP协议用于在IP主机之间发送/接收数据包。IP尽最大努力运行。IP主机只向接收主机发送数据包,但它并不能保证包会被发送到它们的目的地,也不能保证按顺序发送。这意味着IP并非可靠的协议。必要时,必须在IP层的上面实现可靠性。

五、IP数据包格式

IP数据包由IP头、发送方IP地址和接收方IP地址以及数据组成。每个IP数据包的大小最大为64KBIP头包含有关数据包的更多信息,例如数据包的总长度、数据包使用TCP还是UDP、生存时间(TTL)计数、错误检测的校验和等。

六、路由器

IP主机之间可能相距很远。通常不可能从一个主机直接向另一个主机发送数据包。路由器是接收和转发数据包的特殊IP主机。如果有的话,一个IP数据包可能会经过许多路由器,或者跳跃到达某个目的地。

每个IP包在IP报头中都有一个8位生存时间(TTL)计数,其最大值位255.在每个路由器上,TTL会减小1.如果TTL减小到0,而包仍然没有到达目的地,则会直接丢弃它。这可以防止任何数据包在IP网络中无线循环。

七、UDP

UDP(用户数据报协议)在IP上运行,用于发送/接收数据报。与IP类似,UDP不能保证可靠性,但是快速高效。它用于可靠性不重要的情况。例如,用户可以使用ping命令探测目标主机,如:

ping主机名或pingIP地址

ping是一个向目标主机发送带时间戳UDP包的应用程序。接收到一个pingping数据包后,目标主机将带有时间戳的UDP包回送给发送者,让发送者可以计算和显示往返时间。如果目标主机不存在或宕机,当TTL减小为0时,路由器将会丢弃pingpingUDP数据包。

八、TCP

TCP(传输控制协议)是一种面向连接的协议,用于发送/接收数据流。TCP也可在IP上运行,但它保证了可靠的数据传输。通常,UDP类似于发送邮件的USPS,TCP类似于电话连接。

九、端口编号

在各主机上,多个应用程序(进程)可同时使用TCP/UDP。每个应用程序由三个组成部分唯一标识

应用程序=(主机IP,协议,端口号)

其中,协议是TCPUDP,端口号是分配给应用程序的唯一无符号短整数。要想使用UDPTCP,应用程序(进程)必须先选择或获取一个端口号。前1024个端口号已被预留。其他端口号可供一般使用。应用程序可以选择一个可用端口号,也可以让操作系统内核分配端口号。

十、网络和主机字节序

计算机可以使用大端字节序,也可以使用小端字节序。在互联网上,数据始终按网络序排列,这是大端。在小端机器上,例如基于Intel x86PChtons()htonl()ntohs()ntohl()等库函数,可在主机序和网络序之间转换数据。

十一、TCP/IP网络中的数据流

      13.6给出了TCP/IP网路中的各层数据格式。它还给出了各层之间的数据流路径。

十二、网络编程

1.网络编程平台

      (1)服务器上的用户账户

        现在,几乎所有的教育机构都为它们的教职工和学生提供了网络接入,通常是以无线连接的形式。每位机构成员都要能够登录服务器以接入互联网。服务器上是否允许一般的网络编程取决于本地网络管理策略。

(2)单独PC或笔记本电脑:

即学生未接入服务器,仍然可以使用计算机的本地主机在单独计算机上进行网络编程。在这种情况下,学生需要下载安装一些网络部件。

2.服务器-客户机计算模型

  大多数网络编程任务都基于服务器-客户机计算模型。在服务器-客户机计算模型中,我们首先在服务器主机上运行服务器进程。然后,我们从客户机主机运行客户机。在UDP中,服务器等待来自客户机的数据报,处理数据报并生成对客户机的响应。                            

十三、套接字编程

      在网络编程中,TCP/IP的用户界面是通过一系列C语言库函数和系统调用来实现的,这些函数和系统调用统称为套接字API

1.套接字地址

        ·TCP/IP网络的sin_family始终设置为AF_INET

        ·sin_port包含按网络字节顺序排列的端口号。

        ·sin_addr是按网络字节顺序排列的主机IP地址

2.套接字API   

        服务器必须创建一个套接字,并将其与包含服务器IP地址和端口号的套接字地址绑定。它可以使用一个固定端口号,或者让操作系统内核选择一个端口号(如果sin_port0.为了与服务器通信,客户机必须创建一个套接字。

3.UDP套接字

UDP套接字使用sendto()/recvfrom()来发送/接收数据报。

4.TCP套接字

       在创建套接字并将其绑定到服务器地址之后,TCP服务器使用listen()accept()来接受来自客户机的连接。

十四、UDP回显服务器-客户机程序

十五、TCP回显服务器-客户机程序

十六、主机名和IP地址

      库函数

      Gethostname(char *name,sizeof(name))

      name数组中返回计算机的主机名字符串,但它可能不是用点记法表示的完整正式名称,也不是其IP地址

十七、WebCGI编程

1、HTTP编程模型

   HTTP是一种基于服务器-客户机的协议,用户互联网上的应用程序。它在TCP上运行,因为它需要可靠的文件传输。

2、web页面

   Web页面是用HTML标记语言编写的文件。Web文件通过一系列HTML元素指定Web页面的布局,可在Web浏览器上解释和显示。常用的Web浏览器有Internet ExplorerFirefoxGoogle Chrome等。

3、托管Web页面

4、PHP

   PHP(超文本预处理器)是一种用于创建服务器端动态Web页面的脚本语言。PHP文件用.php后缀标识。它们本质上是HTML文件,包含Web服务器要执行的PHP代码。当Web客户机请求PHP文件时,Web服务器将首先处理PHP语句来生成一个HTML文件,然后将该文件发送给请求客户机。

 

posted on 2021-11-28 16:24  20191226刘煊赫  阅读(21)  评论(0编辑  收藏  举报