网络编程复习.docx
《网络编程复习.docx》由会员分享,可在线阅读,更多相关《网络编程复习.docx(12页珍藏版)》请在冰豆网上搜索。
网络编程复习
1.OSI七层网路模型:
应用层、表示层、会话层、数据传输层、网络层、数据链路层、物理硬件层
2.TCP/IP的四层和协议(记住四层就可以了):
应用层(FTP/HTTP/TELNET/SMTP/DNS/TFTP等)、数据传输层(TCP/UDP)、网络层(IP/ICMP/ARP/RARP/BOOTP等)、数据链路层
3.什么是HTTP?
有哪些方法?
post和get方法的区别
(1)HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
(2)HTTP1.0定义了三种请求方法:
GET,POST和HEAD方法。
HTTP1.1新增了五种请求方法:
OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
(3)区别一:
get重点在从服务器上获取资源,post重点在向服务器发送数据;
区别二:
get传输数据是通过URL请求,以field(字段)=value的形式,置于URL后,并用"?
"连接,多个请求数据间用"&"连接,如http:
//127.0.0.1/Test/login.action?
name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
区别三:
Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;
区别四:
get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
post较get安全性较高;
区别五:
get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。
4.FTP协议的作用和两种传输模式:
FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
(1)ASCII传输方式:
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印符)。
在拷贝任何非文本文件之前,用binary命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。
(2)二进制传输模式:
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。
即使目的地机器上包含位序列的文件是没意义的。
例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。
这会使传输稍微变慢,也会损坏数据,使文件变得不能用。
(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。
如果你传输二进制文件,所有的位都是重要的。
)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。
流水线概念:
HTTP客户每碰到一个引用就立即发出一个请求,因而HTTP客户可以一个接一个紧挨着发出各个引用对象的请求。
服务器收到这些请求后,也可以一个接一个紧挨着发出各个对象。
如果所有的请求和响应都是紧挨着发送的,那么所有引用到的对象一共只经历1个RTT的延迟。
5.IP地址的划分
6.ipv4的报文格式
版本(4bit):
为4代表ipv4,为6代表ipv6
首部长度(4bit):
一般为5,代表IP首部一共占用20个字节(4*5)
服务类别(8bit):
用来获得更好的服务
总长度(16bit):
首部和数据部分的总长度,单位为字节
标识(16bit):
用于在IP层对数据包进行分段的时候,标识数据包
标志(3bit)
片偏移(13bit):
本数据包的数据在分段中的偏移(需要再乘以8)
生存时间(8bit):
本数据包的TTL
协议(8bit):
使用何种协议以便处理
首部校验和(16bit):
只检验数据报的首部,但不包括数据部分
源IP地址(32bit)
目的IP地址(32bit)
7.ipv6地址个数和数据包格式
Ipv6的长度为128位,总地址个数为2的128次方
8.套接字编程:
怎么标识一个应用层的进程?
9.创建进程:
调用fork()系统函数,它执行一次却返回两个值
多进程的设计算法:
进程:
(优点:
可复用,性能好;缺点:
复杂,难以使用)
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
10.服务器和客户端的划分
11.TCP/IP的端点格式
12.同步和异步
(1)异步
报文发送和接收是分开的,相互独立的,互不影响。
这种方式又分两种情况:
1)异步双工:
接收和发送在同一个程序中,由两个不同的子进程分别负责发送和接收
2)异步单工:
接收和发送是用两个不同的程序来完成。
(2)同步
报文发送和接收是同步进行,既报文发送后等待接收返回报文。
同步方式一般需要考虑超时问题,即报文发出去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读返回报文,直接通知超时返回。
13.拥塞控制、流量控制的概念
所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受。
14.半关闭
定义
TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力,这就是TCP的半关闭。
当一方关闭发送通道后,仍可接受另一方发送过来的数据,这样的情况叫“半关闭”。
(拆除TCP连接是:
你关闭你的发送通道,我关闭我的发送通道)。
半关闭的产生
1.客户端发送FIN,另一端发送对这个FIN的ACK报文段。
此时客户端就处于半关闭。
2.调用shutdown,shutdown的第二个参数为SHUT_WR时,为半关闭。
15.p2p的设计构造
16.线程池
线程池能有效的处理多个线程的并发问题,避免大量的线程因为互相强占系统资源导致阻塞现象,能够有效的降低频繁创建和销毁线程对性能所带来的开销
17.smtp电子邮件的格式
18.mac/ip地址
区别:
(1)IP地址是指Internet协议使用的地址,而MAC地址是Ethernet协议使用的地址。
(2)IP地址是可以自动分配的,MAC地址在每个网卡出场的时候就有一个全球唯一的MAC地址,所以很多的验证软件就是验证mac地址的。
(3)IP是可以更改的,mac地址虽然也可以更改,但是一般用不上,除非要用来绕过一些验证软件的。
网卡在通讯的时候通过mac地址相互识别。
IP地址:
是指互联网协议地址,是IPAddress的缩写。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
目前还有些ip代理软件,但大部分都收费。
MAC地址:
意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。
在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC地址。
因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。
19.网络服务的可靠性包含哪几个方面:
安全性和稳定性
20.三次握手和四次挥手
21.代码:
参考书5-7121-123
服务端:
客户端:
TCP的半关闭服务端和客户端: