ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第十三章学习笔记

2021-11-28 16:31:42  阅读:94  来源: 互联网

标签:IP 客户机 IP地址 笔记 学习 TCP 第十三章 主机 数据包


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有