主要是对计算机网络方面的一些重点知识进行整理、回顾……复习!

重点:

三次握手协议(非常非常重要!!!)
seq序列号,这是为了连接以后传送数据用的
ack确认序列号,是对收到的数据包的确认,值是等待接收的数据包的序列号。
SYN 同步信号
ACK 应答信号, 当 ACK=1时候表示ack字段有意义
为什么要三次握手:
- 防止了服务器端的一直等待而浪费资源。
为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手
为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。
过程:
1、客户端发起握手,目的端点是 服务端 的端点 post_server
生成一个随机数作为它的初始化发送序号 x
发出一个同步报文段,SYN=1,发送序号 seq=x
** 并进入SYN_SEND状态,等待服务器确认
2、服务端监听到端口 post_server 上有连接请求,响应
生成一个随机数作为它的初始发送序号 seq = y
发出同步报文字段并对主机 A 端口1的连接请求进行确认,发送ack=x+1
即发送 SYN+ACK 包,此时服务器进入SYN_RECV状态
3、主机 A
发出对 服务端 端口 post_server 的确认,确认序号 ack=y+1,还有seq=x+1
** 客户端和服务器进入ESTABLISHED状态,完成三次握手

四次分手
1、第一次分手:
主机 A 关闭 A主机的 端口1 到 B主机的 端口2 的传输连接。
1)应用程序通知 TCP 数据已经发送完毕时,关闭连接
2)TCP 向主机 B 发送一个带 FIN 附加标记的报文段(FIN 表示 finish),FIN=1,seq=x
2、第二次分手:
主机 B 响应
1)收到这个 FIN 报文段之后,并不立刻用 FIN 报文段回复主机 A,而是先向主机 A 发送一个确认序号 ,ACK=1,ack=x+1
2)同时通知自己相应的应用程序,主机 A 方传输已经结束,对方要求关闭连接(先发送 ACK 的目的是为了防止这段时间内,主机 A 重传 FIN 报文段)
3、第三次分手:
主机 B 关闭 端口2到端口1的传输连接。
1)应用程序告诉 TCP: 我要彻底地关闭连接
2)TCP 收到对最后数据的确认后,向主机 A 发送一个 FIN 报文段。FIN=1,seq=y,y 是 B 发送数据的最后字节的序号加1。ACK=1,seq=x+1。
这里有个问题需要注意的:
此时 A 到 B 方向上的传输连接已经关闭,但是主机 B 到 A 还可以发送数据,连接处于半关闭的状态。(因为原来 TCP 是全双工的工作方式,只关闭了一端的连接!)
4、第四次分手:
主机 A 响应
1)收到这个 FIN 报文段之后,向主机 B 发送一个 ACK 表示连接彻底释放。ACK=1,ack=y+1
2)主机B收到主机A的ACK报文段以后,就关闭连接;此时,主机A等待2MSL (Maximum Segment Lifetime)后依然没有收到回复,则证明主机 B已正常关闭,那好,主机A也可以关闭连接了。
- 为什么连接的时候是三次握手,关闭的时候却是四次握手?
1、TCP是全双工模式,关闭连接时,当 主机 B收到主机A的FIN报文时,仅仅表示主机 A不再发送数据了但是还能接收数据。
2、主机 B也未必全部数据都发送给A了,所以B可以立即close;也可以发送一些数据给A后,再发送FIN报文给对方来表示同意现在关闭连接,因此, 主机 BACK和FIN一般都会分开发送。
TCP/UDP
TCP 提供面向连接 的,可靠的服务,传输单位:TCP报文段
UDP 提供非面向连接 的,不可靠的服务,传输单位:用户数据段,数据传输更快
TCP 对应的协议有:
1、FTP:文件传输协议
2、SMPT:邮件传送协议,用于发送邮件
3、POP3:与SMPT相对应,用于接收邮件
4、HTTP:从web端传送超文本到本地的传送协议
POP3和IMAP的区别?
POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。
而IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。
UDP 对应的协议有:
1、DNS:用于域名解析服务,将域名转换成IP地址
2、SNMP:简单网络管理协议
分层

物理层:
将电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式
链路层:
数据包会带上发送地址和接收地址,也就是MAC地址
网络层:
网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。
因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。传输层:
同一台主机上有许多程序都需要用到网络,端口可以确定表示这个数据包到底供哪个程序使用。
传输层建立”端口到端口”的通信,”网络层”的功能是建立”主机到主机”的通信。
(ftp 21,ssh 22,dns 53,http 80)应用层
我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。
如果想要使传输的数据有意义,则必须使用到应用层协议

常见地址分配:
A类地址:以0开头, 第一个字节范围:0~127(1.0.0.0 - 126.255.255.255);
B类地址:以10开头, 第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);
C类地址:以110开头, 第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);
10.0.0.0—10.255.255.255, 172.16.0.0—172.31.255.255, 192.168.0.0—192.168.255.255。(Internet上保留地址用于内部)

- 有哪些私有(保留)地址?
A类:10.0.0.0 - 10.255.255.255
B类:172.16.0.0 - 172.31.255.255
C类:192.168.0.0 - 192.168.255.255
NAT(网络地址转换)
是一种网络地址翻译技术,将内部私有IP地址改变成可以在公网上使用的.网关(gateway)
能在不同协议间移动数据路由器(router)
是在不同网络间移动数据 相当于传统所说的IP网关(IP gateway)
了解:
1、端口及对应的服务

2、在浏览器中输入网址之后执行会发生什么?
* 查找域名对应的IP地址。这一步会依次查找浏览器缓存,系统缓存,路由器缓存,ISPNDS缓存,根域名服务器
* 浏览器向IP对应的web服务器发送一个HTTP请求
* 服务器响应请求,发回网页内容
* 浏览器解析网页内容

3、各种协议
ICMP协议:
因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
TFTP协议:
是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
HTTP协议:
超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
DHCP协议: 动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。
NAT协议:
网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,
DHCP协议:
一个局域网的网络协议,使用UDP协议工作,用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射
4、DNS域名系统
当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。