急时缓一缓
和自己微笑^_^
>>每日总结
1.OSI模型和TCP/IP模型的比较
2.端口号(Port):标识了一个主机上进行通信的不同的应用程序。
在TCP/IP协议中,用“源IP”、“源端口号”、“目的IP”、“目的端口号”、“协议号”这样一个五元组来标识一个通信(可以通过netstat -n查看);
3.SSH(Secure Shell)安全外壳协议,传输层协议,是一种通用的、功能强大的、基于软件的网络安全解决方案。计算机每次向网络发送数据时,SSH都会自动对其进行加密。数据到达目的地时,SSH自动对加密数据进行解密。整个过程都是透明的,使用OpenSSH工具将会增进你的系统安全性。谈到网络安全访问,相信大家首先想到的就是安全Shell,也就是Secure Shell,通常简写为SSH。这是因为SSH安装容易、使用简单,而且比较常见,一般的Unix系统、Linux系统、FreeBSD系统都附带有支持SSH的应用程序包。
4.Telnet协议(远程终端协议)是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
5.ICMP(Internet Control Message Protocol)Internet控制报文协议,网络层协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。
6.ftp 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。默认端口号21。
7.SMTP(简单邮件传输协议)是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS。
8.DNS:域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
9.地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
>>思维导图
>>三次握手和四次挥手
这个真的是一再强调的知识点之一啦!!!!
1.三次握手:
三次握手确保通信双方都具有收发数据的能力。
三次握手的原因?这个问题其实同为什么不是两次,为什么不是四次等回答是相似的。TCP是全双工通信,3次握手完成两个重要的功能,既要双方都能够通信,也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。如果只是两次握手,只能确定单向是可以通信的,这样当客户端发起请求,服务端响应,服务端创建新的套接字开始与客户端通信,但是如果这是一个无效的连接请求,如网络滞留的一个请求,这样会造成服务器的资源浪费。
不需要四次,是因为前三次就可以确定双方可以通信,由于ACK只是一个比特位,因此可以让回复一端发送SYN时带上ACK,这样提高了连接效率。
①第一次握手失败,即SYN丢失,客户端接重传。
②第二次握手失败,即服务端发送的ACK丢失,也就意味着服务端的SYN也丢失了,客户端和服务端都会重新发送SYN
③第三次握手失败,即客户端给服务器的ACK丢失,这个时候, 如果此时ACK在网络中丢失,那么Server端该TCP连接的状态为SYN_RECV,并且依次等待3秒、6秒、12秒后重新发送SYN+ACK包,以便Client重新发送ACK包。如果重发指定次数后,仍然未收到ACK应答,那么一段时间后,Server自动关闭这个连接。 但是Client认为这个连接已经建立,如果Client端向Server写数据,Server端将以RST包(用于强制关闭tcp连接)响应,方能感知到Server的错误。
2.四次挥手:
被动关闭方等待接收方调用close接口不关心这些数据了,才会发送FIN,得到ACK回复后,释放socket,因此被动关闭方的ACK和FIN不能同时发送。
3.TIME_WAIT
这个状态是非常重要的状态,这个状态是为了保护主动关闭方,在第三次挥手完毕后,主动关闭方会自动等待2MSL(在Centos上默认配置得值是60s),MSL:报文的最大生命周期--30s;
这样等待的意义则是:
假设没有TIME_WAIT直接关闭套接字会出现什么情况?
假设最后一次主动关闭方回复的ACK丢失,并使用相同的地址信息启动了新的客户端
1.有可能接收到对方重发的FIN请求,对新连接造成影响;
2.向被动关闭方发送SYN请求的时候,对方有可能处于LAST_ACK等待最后一次回复,会认为数据中标志信息错误,回复RST重置连接报文,要求重新建立连接,对新连接造成影响。
因此要求主动关闭方,不能直接关闭而是等待一段时间:2个MSL
1.接收到重发的FIN请求,则进行回复处理;
2.等待网络中后续重发的信息都消失在网络中,不会对后续新连接造成影响。
设置套接字选项:SO_REUSEADDR
tcp保活机制:
连接断开在程序中的各体现:
4.FIN包和ACK
第二次挥手和第三次挥手之所以不能同时,是因为如果被动关闭方还有数据没有发送完,它会先回复一个ACK,等数据发送完后再发送FIN。
~bye~