网络编程.docx
《网络编程.docx》由会员分享,可在线阅读,更多相关《网络编程.docx(21页珍藏版)》请在冰豆网上搜索。
![网络编程.docx](https://file1.bdocx.com/fileroot1/2023-4/20/66169635-65a5-4bd9-b479-0a1f24e9fe93/66169635-65a5-4bd9-b479-0a1f24e9fe931.gif)
网络编程
网络编程相关
1.网络应用进程在网络体系结构中的位置
从计算机网络体系结构的角度来看,网络应用进程处于网络层次结构的最上层。
从功能上,可以将网络应用程序分为两部分,一部分是专门负责网络通信的模块,它们与网络协议栈相连接,借助网络协议栈提供的服务完成网络上数据信息的交换。
另一部分是面向用户或者作其他处理的模块,它们接收用户的命令,或者对借助网络传输过来的数据进行加工,这两部分模块相互配合,来实现网络应用程序的功能。
UDP与TCP的报文格式
2.端口号的分配机制
TCP/IP协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。
对于TCP,或者UDP,将它们的全部65535个端口号分为保留端口号和自由端口号两部分。
保留端口的范围是0—1023,又称为众所周知的端口或熟知端口(well-knownport),只占少数,采用全局分配或集中控制的方式,由一个公认的中央机构根据需要进行统一分配,静态地分配给因特网上著名的众所周知的服务器进程,并将结果公布于众。
总之,TCP或UDP端口的分配规则是:
端口0:
不使用,或者作为特殊的使用;
端口1-255:
保留给特定的服务,TCP和UDP均规定,小于256的端口号才能分配给网上著名的服务;
端口256-1023:
保留给其他的服务,如路由;
端口1024-4999:
可以用作任意客户的端口;
端口5000-65535:
可以用作用户的服务器端口。
3.进程的网络地址的概念
在因特网络中,用一个三元组可以在全局中唯一地标识一个应用层进程:
应用层进程地址=(传输层协议,主机的IP地址,传输层的端口号)
这样一个三元组,叫做一个半相关(half-association),它标识了因特网中,进程间通信的一个端点,也把它称为进程的网络地址。
一个完整的网间通信需要一个五元组在全局中唯一地来标识:
(传输层协议,本地机IP地址,本地机传输层端口,远地机IP地址,远地机传输层端口)
这个五元组称为一个全相关(association)。
即两个协议相同的半相关才能组合成一个合适的全相关,或完全指定一对网间通信的进程。
4.网络协议的特征
1)面向消息的协议
面向消息的协议以消息为单位在网上传送数据,在发送端,消息一条一条地发送,在接收端,也只能一条一条地接收,每一条消息是独立的,消息之间存在着边界。
2)基于流的协议
基于流的协议不保护消息边界,将数据当作字节流连续地传输,不管实际消息边界是否存在。
5.传输层的用户数据报协议(UserDatagramProtocol,UDP)是一种尽力传送的无连接的不保障可靠的传输服务,是一种保护消息边界的数据的传输。
6.传输控制协议(TransmissionControlProtocol,TCP)应用层进程提供一个面向连接的、端到端的、完全可靠的(无差错、无丢失、无重复或失序)全双工的流传输服务。
TCP被称作一种端对端(endtoend)协议,这是因为它提供一个直接从一台计算机上的应用进程到另一远程计算机上的应用进程的连接。
应用进程能请求TCP构造一个连接,通过这个连接发送和接收数据,以及关闭连接。
由TCP提供的连接叫做虚连接(virtualconnection),虚连接是由软件实现的。
事实上,底层的因特网系统并不对连接提供硬件或软件支持,只是两台机器上的TCP软件模块通过交换消息来实现连接的幻象。
三次握手
为确保连接的建立和终止都是可靠的,TCP使用三次握手(3-wayhandshake)的方式来建立连接
7.C/S模式通信程序
C/S模式过程中服务器处于被动服务的地位。
首先服务器方要先启动,并根据客户请求提供相应服务,服务器的工作过程是:
1)打开一通信通道,并告知服务器所在的主机,它愿意在某一公认的地址上(熟知知端口,如FTP为21)接收客户请求。
2)等待客户的请求到达该端口。
3)服务器接收到服务请求,处理该请求并发送应答信号。
为了能并发地接收多个客户的服务请求,要激活一个新进程或新线程来处理这个客户请求(如UNIX系统中用fork、exec)。
服务完成后,关闭此新进程与客户的通信链路,并终止。
4)返回第二步,等待并处理另一客户请求。
5)在特定的情况下,关闭服务器。
客户方采取的是主动请求方式,其工作过程是:
1)打开一通信通道,并连接到服务器所在主机的特定监听端口。
2)向服务器发送请求报文,等待并接收应答;继续提出请求,与服务器的会话按照应用协议进行。
3)请求结束后,关闭通信通道并终止。
8.关于几个概念
9.沙漏计时器形状的TCP/IP协议族
10.应用进程、套接口、网络协议栈及操作系统的关系
11.三种表示套接字地址的结构
1)sockaddr结构,针对各种通信域的套接字,存储它们的地址信息。
structsockaddr{
unsignedshortsa_family;//地址家族
charsa_data;//协议地址
};
2)sockaddr_in结构,专门针对Internet通信域,存储套接字相关的网络地址信息,例如IP地址,传输层端口号等信息。
structsockaddr_in{
shortintsin_family;//地址家族
unsignedshortintsin_port;//端口号
structin_addrsin_addr;//IP地址
unsignedcharsin_zero[8];//全为0
};
3)in_addr结构,专门用来存储IP地址。
sructin_addr{
usignedlongs_addrl;
};
4)这些数据结构的一般用法:
首先,定义一个Sockaddr_in的结构实例,并将它清零。
比如:
structsockaddr_inmyad;
memset(&myad,0,sizeof(structsockaddr_in));
然后,为这个结构赋值,
比如:
myad.sin_family=AF_INET;
myad.sin_port=htons(8080);
myad.sin_addr.s_addr=htonl(INADDR-ANY);
第三步:
在函数调用中使用时,将这个结构强制转换为sockaddr类型。
比如:
accept(listenfd,(sockaddr*)(&myad),&addrlen);
12.TCPC/S模型
13.无连接的套接字编程
A.对等模式
B.客户/服务器模式
计算机网络基础知识
一、物理层
物理层的主要任务描述为确定与传输媒体的接口的一些特性,即:
机械特性、电气特性、功能特性、过程特性
二、数据链路层
1.数据链路层使用的信道主要有以下两种类型:
点对点信道、广播信道。
2.数据链路层的任务:
1)封装成帧(framing):
在数据的前后分别添加首部和尾部,然后就构成了一个帧。
确定帧的界限。
2)透明传输
3)差错控制:
广泛使用了循环冗余检验CRC的检错技术
3.数据链路层的协议:
a.PPP协议
a.1有三个组成部分
一个将IP数据报封装到串行链路的方法。
链路控制协议LCP(LinkControlProtocol)。
网络控制协议NCP(NetworkControlProtocol)。
a.2PPP是面向字节的,所有的PPP帧的长度都是整数字节。
b.载波监听多点接入/碰撞检测CSMA/CD协议
⏹“多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
⏹“载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
⏹“碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。
⏹当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
⏹当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
⏹所谓“碰撞”就是发生了冲突。
因此“碰撞检测”也称为“冲突检测”。
4.以太网的两个标准
DIXEthernetV2是世界上第一个局域网产品(以太网)的规约。
IEEE的802.3标准。
DIXEthernetV2标准与IEEE的802.3标准只有很小的差别,因此可以将802.3局域网简称为“以太网”。
严格说来,“以太网”应当是指符合DIXEthernetV2标准的局域网
5.适配器
⏹网络接口板又称为通信适配器(adapter)或网络接口卡NIC(NetworkInterfaceCard),或“网卡”。
⏹适配器的重要功能:
进行串行/并行转换。
对数据进行缓存。
在计算机的操作系统安装设备驱动程序。
实现以太网协议
6.以太网发送的数据都使用曼彻斯特(Manchester)编码
7.集线器工作在物理层,网桥工作在数据链路层,交换机工作在数据链路层,以太网交换机实质上就是一个多接口的网桥。
⏹网桥根据MAC帧的目的地址对收到的帧进行转发。
⏹网桥具有过滤帧的功能。
8.MAC地址
“MAC地址”实际上就是适配器地址或适配器标识符EUI-48。
9.最常用的MAC帧是以太网V2的格式。
10.在物理层扩展以太网使用集线器,在数据链路层扩展局域网是使用网桥
三、网络层
1.网络层的任务:
(1)负责为分组交换网上的不同主机提供通信服务
(2)路由选择,转发分组。
2.IP协议
网际协议IP是TCP/IP体系中两个最主要的协议之一。
与IP协议配套使用的还有四个协议:
⏹地址解析协议ARP(AddressResolutionProtocol):
IP地址MAC地址
⏹逆地址解析协议RARP(ReverseAddressResolutionProtocol):
MAC地址IP地址
⏹网际控制报文协议ICMP(InternetControlMessageProtocol)
⏹网际组管理协议IGMP(InternetGroupManagementProtocol)
3.中间设备又称为中间系统或中继(relay)系统。
⏹物理层中继系统:
转发器(repeater)。
⏹数据链路层中继系统:
网桥或桥接器(bridge)。
⏹网络层中继系统:
路由器(router)。
⏹网桥和路由器的混合物:
桥路器(brouter)。
⏹网络层以上的中继系统:
网关(gateway)。
4.分类IP地址
Nethost可用IP
A:
0+7位24位1.0.0.0~126.255.255.255
B:
10+14位16位128.1.0.0~191.255.255.255
C:
110+21位8位192.0.1.0~233.255.255.255
D:
1110多播地址
E:
1111保留
5.IP数据报的格式
⏹一个IP数据报由首部和数据两部分组成。
⏹首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
⏹在首部的固定部分的后面是一些可选字段,其长度是可变的。
5.划分子网
当没有划分子网时,IP地址是两级结构。
划分子网后IP地址就变成了三级结构。
划分子网只是把IP地址的主机号host-id这部分进行再划分,而不改变IP地址原来的网络号net-id。
6.子网掩码
从一个IP数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
使用子网掩码(subnetmask)可以找出IP地址中的子网部分。
7.路由选择协议
⏹内部网关协议IGP(InteriorGatewayProtocol)即在一个自治系统内部使用的路由选择协议。
目前这类路由选择协议使用得最多,如RIP和OSPF协议。
OSPF使用的是可靠的洪泛法.
⏹外部网关协议EGP(ExternalGatewayProtocol)若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。
这样的协议就是外部网关协议EGP。
在外部网关协议中目前使用最多的是BGP-4。
8.网关的作用:
通过它可以访问外网。
网关实质上是一个网络通向其他网络的IP地址。
从一个房间走到另一个房间,必然要经过一扇门。
同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。
顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。
四、传输层
1.传输层任务:
负责向两个主机中进程之间的通信提供可靠地端到端服务。
但网络层是为主机之间提供逻辑通信。
2.虚电路服务与数据报服务的对比
对比的方面
虚电路服务
数据报服务
思路
可靠通信应当由网络来保证
可靠通信应当由用户主机来保证
连接的建立
必须有
不需要
终点地址
仅在连接建立阶段使用,每个分组使用短的虚电路号
每个分组都有终点的完整地址
分组的转发
属于同一条虚电路的分组均按照同一路由进行转发
每个分组独立选择路由进行转发
当结点出故障时
所有通过出故障的结点的虚电路均不能工作
出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序
总是按发送顺序到达终点
到达终点时不一定按发送顺序
端到端的差错处理和流量控制
可以由网络负责,也可以由用户主机负责
由用户主机负责
3.TCP与UDP
⏹UDP在传送数据之前不需要先建立连接。
对方的运输层在收到UDP报文后,不需要给出任何确认。
虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。
⏹TCP则提供面向连接的服务。
TCP不提供广播或多播服务。
由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。
这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
⏹运输层的UDP用户数据报与网际层的IP数据报有很大区别。
IP数据报要经过互连网中许多路由器的存储转发,但UDP用户数据报是在运输层的端到端抽象的逻辑信道中传送的。
⏹TCP报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。
但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了TCP连接。
4.用户数据报UDP有两个字段:
数据字段和首部字段。
首部字段有8个字节,由4个字段组成,每个字段都是两个字节。
5.可靠传输-----停止等待协议、自动重传请求协议
6.TCP可靠传输的实现----以字节为单位的滑动窗口
7.TCP的流量控制-----利用滑动窗口实现流量控制
8.拥塞控制
8.1.出现资源拥塞的条件:
对资源需求的总和>可用资源
8.2.拥塞控制方法:
慢开始和拥塞避免、快重传和快恢复
五、应用层
1.FTP
⏹文件传送协议FTP只提供文件传送的一些基本的服务,它使用TCP可靠的运输服务。
⏹FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
⏹FTP使用客户服务器方式。
一个FTP服务器进程可同时为多个客户进程提供服务。
FTP的服务器进程由两大部分组成:
一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
主进程的工作步骤如下:
⏹打开熟知端口(端口号为21),使客户进程能够连接上。
⏹等待客户进程发出连接请求。
⏹启动从属进程来处理客户进程发来的请求。
从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
⏹回到等待状态,继续接受其他客户进程发来的请求。
主进程与从属进程的处理是并发地进行。
FTP使用两个TCP连接:
⏹控制连接在整个会话期间一直保持打开,FTP客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。
⏹实际用于传输文件的是“数据连接”。
服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。
⏹数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。
FTP使用两个不同的端口号:
⏹当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。
⏹接着,服务器进程用自己传送数据的熟知端口(20)与客户进程所提供的端口号码建立数据传送连接。
⏹由于FTP使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。
2.简单文件传送协议TFTP
⏹TFTP是一个很小且易于实现的文件传送协议。
⏹TFTP使用客户服务器方式和使用UDP数据报,因此TFTP需要有自己的差错改正措施。
⏹TFTP只支持文件传输而不支持交互。
⏹TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
3.远程终端协议TELNET
⏹TELNET是一个简单的远程终端协议,也是因特网的正式标准。
⏹用户用TELNET就可在其所在地通过TCP连接注册(即登录)到远地的另一个主机上(使用主机名或IP地址)。
⏹TELNET能将用户的击键传到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕。
这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。
⏹TELNET也使用客户服务器方式。
在本地系统运行TELNET客户进程,而在远地主机则运行TELNET服务器进程。
⏹和FTP的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。
4.万维网
⏹万维网以客户服务器方式工作。
⏹浏览器就是在用户计算机上的万维网客户程序。
万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。
⏹客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
⏹在一个客户程序主窗口上显示出的万维网文档称为页面(page)。
5.万维网的工作过程
用户点击鼠标后所发生的事件:
(1)浏览器分析超链指向页面的URL。
(2)浏览器向DNS请求解析的IP地址。
(3)域名系统DNS解析出清华大学服务器的IP地址。
(4)浏览器与服务器建立TCP连接
(5)浏览器发出取文件命令:
GET/chn/yxsz/index.htm。
(6)服务器给出响应,把文件index.htm发给浏览器。
(7)TCP连接释放。
(8)浏览器显示“清华大学院系设置”文件index.htm中的所有文本。
6.URL
7.Http
7.1HTTP是一个应用层协议,它使用TCP连接进行可靠的传送。
HTTP是面向事务的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
7.2HTTP的流程
1.打开HTTP连接。
一定要记住HTTP是一种无状态协议。
正因为如此,对于每一个请求你都要建立一个新的连接。
2.初始化方法请求。
这里面将包含一些类型的方法指示符用来描述调用什么方法和方法所需要的参数。
3.设置HTTP请求头。
这里面包含要传送的数据类型(二进制)和数据的总长。
4.发送请求。
将二进制流写到服务器。
5.读取请求。
目标servlet程序将被调用并接受HTTP请求数据。
servlet程序就调用所有必要的参数选择相应的方法。
注意,如果这是这个客户端的第一次请求,一个服务器对象的新的实例就会被创建。
6.调用方法。
方法将会被服务器端的对象调用。
7.初始化方法响应。
如果调用的方法抛出一个异常,客户将接收到出错信息。
否则,返回的类型(如果有)将会被发送。
8.设置HTTP响应头。
在响应头中,一定会设置待发送数据的类型和长度。
9.发送响应。
二进制数据流将从Web服务器发送并返回给客户端。
10.关闭连接。
8.浏览器的主要组成部分
⏹浏览器有一组客户、一组解释程序,以及管理这些客户和解释程序的控制程序。
⏹控制程序是其中的核心部件,它解释鼠标的点击和键盘的输入,并调用有关的组件来执行用户指定的操作。
⏹例如,当用户用鼠标点击一个超链的起点时,控制程序就调用一个客户从所需文档所在的远地服务器上取回该文档,并调用解释程序向用户显示该文档。
9.SMTP
SMTP通信的三个阶段:
1).连接建立:
连接是在发送主机的SMTP客户和接收主机的SMTP服务器之间建立的。
SMTP不使用中间的邮件服务器。
2).邮件传送
3).连接释放:
邮件发送完毕后,SMTP应释放TCP连接。
10.简单网络管理协议SNMP
⏹网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能,服务质量等。
网络管理常简称为网管。
⏹网络管理并不是指对网络进行行政上的管理。
六、网络安全
1.恶意程序(rogueprogram)
(1)计算机病毒——会“传染”其他程序的程序,“传染”是通过修改其他程序来把自身或其变种复制进去完成的。
(2)计算机蠕虫——通过网络的通信功能将自身从一个结点发送到另一个结点并启动运行的程序。
(3)特洛伊木马——一种程序,它执行的功能超出所声称的功能。
(4)逻辑炸弹——一种当运行环境满足某种特定条件时执行其他特殊功能的程序。
2.防火墙
防火墙是由软件、硬件构成的系统,是一种特殊编程的路由器,用来在两个网络之间实施接入控制策略。
接入控制策略是由使用防火墙的单位自行制订的,为的是可以最适合本单位的需要。
防火墙内的网络称为“可信赖的网络”(trustednetwork),而将外部的因特网称为“不可信赖的网络”(untrustednetwork)。
防火墙可用来解决内联网和外联网的安全问题。
计算机网络部分
余永涛