第十三章学习笔记
作者:互联网
TCP/IP和网络编程
一、网络编程简介
二、TCP/IP协议
TCP/IP是互联网的基础。TCP代表传输控制协议。IP代表互联网协议。目前有两个版本的IP,即IPv4和IPv6。IPv4使用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数据包的大小最大为64KB。IP头包含有关数据包的更多信息,例如数据包的总长度、数据包使用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,协议,端口号)
其中,协议是TCP或UDP,端口号是分配给应用程序的唯一无符号短整数。要想使用UDP或TCP,应用程序(进程)必须先选择或获取一个端口号。前1024个端口号已被预留。其他端口号可供一般使用。应用程序可以选择一个可用端口号,也可以让操作系统内核分配端口号。
十、网络和主机字节序
计算机可以使用大端字节序,也可以使用小端字节序。在互联网上,数据始终按网络序排列,这是大端。在小端机器上,例如基于Intel x86的PC,htons()、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_port为0).为了与服务器通信,客户机必须创建一个套接字。
3.UDP套接字
UDP套接字使用sendto()/recvfrom()来发送/接收数据报。
4.TCP套接字
在创建套接字并将其绑定到服务器地址之后,TCP服务器使用listen()和accept()来接受来自客户机的连接。
十四、UDP回显服务器-客户机程序
十五、TCP回显服务器-客户机程序
十六、主机名和IP地址
库函数
Gethostname(char *name,sizeof(name))
在name数组中返回计算机的主机名字符串,但它可能不是用点记法表示的完整正式名称,也不是其IP地址
十七、Web和CGI编程
1、HTTP编程模型
HTTP是一种基于服务器-客户机的协议,用户互联网上的应用程序。它在TCP上运行,因为它需要可靠的文件传输。
2、web页面
Web页面是用HTML标记语言编写的文件。Web文件通过一系列HTML元素指定Web页面的布局,可在Web浏览器上解释和显示。常用的Web浏览器有Internet Explorer、Firefox、Google Chrome等。
3、托管Web页面
4、PHP
PHP(超文本预处理器)是一种用于创建服务器端动态Web页面的脚本语言。PHP文件用.php后缀标识。它们本质上是HTML文件,包含Web服务器要执行的PHP代码。当Web客户机请求PHP文件时,Web服务器将首先处理PHP语句来生成一个HTML文件,然后将该文件发送给请求客户机。
标签:IP,客户机,IP地址,笔记,学习,TCP,第十三章,主机,数据包 来源: https://www.cnblogs.com/lxhs/p/15615541.html