请简述TCP/UDP的区别
TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通讯传输,而UDP则常被用于让广播和细节控制交给应用的通讯传输。
二者的区别大体以下:浏览器
- TCP面向链接,UDP面向非链接即发送数据前不须要创建连接
- TCP提供可靠的服务(数据传输),UDP没法保证
- TCP面向字节流,UDP面向报文
- TCP数据传输慢,UDP数据传输快
- TCP提供一种面向链接的、可靠的字节流服务
- 在一个TCP链接中,仅有两方进行彼此通讯,所以广播和多播不能用于TCP
- TCP使用校验和,确认和重传机制来保证可靠传输
- TCP使用累积确认
- TCP使用滑动窗口机制来实现流量控制,经过动态改变窗口的大小进行拥塞控制
TCP对应的协议和UDP对应的协议
TCP对应的协议:缓存
- FTP:定义了文件传输协议,使用21端口。
- Telnet:一种用于远程登录的端口,使用23端口,用户能够以本身的身份远程链接到计算机上,可提供基于DOS模式下的通讯服务。
- SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
- POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
- HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议:安全
- DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
- SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。因为网络设备不少,无链接的服务就体现出其优点。
- TFTP(Trival File TransferProtocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
为何 TCP 叫数据流模式? UDP 叫数据报模式?
- 所谓的“流模式”,是指TCP发送端发送几回数据和接收端接收几回数据是没有必然联系的,好比你经过 TCP链接给另外一端发送数据,你只调用了一次 write,发送了100个字节,可是对方能够分10次收完,每次10个字节;你也能够调用10次write,每次10个字节,可是对方能够一次就收完。
- 缘由:这是由于TCP是面向链接的,一个 socket 中收到的数据都是由同一台主机发出,且有序地到达,因此每次读取多少数据均可以。
- 所谓的“数据报模式”,是指UDP发送端调用了几回 write,接收端必须用相同次数的 read 读完。UDP是基于报文的,在接收的时候,每次最多只能读取一个报文,报文和报文是不会合并的,若是缓冲区小于报文长度,则多出的部分会被丢弃。
- 缘由:这是由于UDP是无链接的,只要知道接收端的 IP 和端口,任何主机均可以向接收端发送数据。 这时候,若是一次能读取超过一个报文的数据, 则会乱套。
请简单说一下你了解的端口及对应的服务

TCP中的流量控制和拥塞避免
- 流量控制主要针对的是端到端传输中控制流量大小并保证传输可靠性(未收到ack就不滑动)。
- 拥塞避免主要是全局网络的拥塞状况,若是有发生丢包则经过拥塞控制减少窗口,肯定出合适(慢启动 拥塞避免 快重传 快恢复)的拥塞窗口(增性加乘性减)。
说一说TCP的三次握手
在TCP/IP协议中,TCP协议提供可靠的链接服务,链接是经过三次握手进行初始化的。三次握手的目的是同步链接双方的序列号和确认号并交换TCP窗口大小信息。
服务器
- 核心思想:让双方都证明对方能发收。知道对方能收是由于收到对方的由于收到信息以后发的回应(ACK)。
IP地址分为哪几类?简单说一下各个分类

其中私有地址有:cookie
- 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
简单解释一些ARP协议的工做过程

HTTP 协议包括哪些请求
- GET:对服务器资源的简单请求,GET用于信息获取,并且应该是安全和幂等的。
- POST:用于发送包含用户提交数据的请求,POST请求表示可能修改服务器上资源的请求。
- HEAD:相似于GET请求,不过返回的响应中没有具体内容,用于获取报头
- PUT:传说中请求文档的一个版本
- DELETE:发出一个删除指定文档的请求
- TRACE:发送一个请求副本,以跟踪其处理进程
- OPTIONS:返回全部可用的方法,检查服务器支持哪些方法
- CONNECT:用于ssl隧道的基于代理的请求
交换机、路由器的概念,并知道各自的用途
- 交换机
- 在计算机网络系统中,交换机是针对共享工做模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的全部的端口都挂接在这条背部总线上,当控制电路收到数据包之后,处理端口会查找内存中的地址对照表以肯定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪一个端口上,经过内部交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到全部的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表中。
- 交换机工做于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每一个端口成功链接时,经过ARP协议学习它的MAC地址,保存成一张ARP表。在从此的通信中,发往该MAC地址的数据包将仅送往其对应的端口,而不是全部的端口。所以,交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。
- 路由器
- 路由器(Router)是一种计算机网络设备,提供了路由与转发两种重要机制,能够决定数据包历来源端到目的端所通过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工做在OSI模型的第三层——即网络层,例如IP协议。
- 路由器的一个做用是连通不一样的网络,另外一个做用是选择信息传送的线路。 路由器与交换器的差异,路由器是属于OSI第三层的产品,交换器是OSI第二层的产品(这里特指二层交换机)。
SYN 攻击
什么是 SYN 攻击(SYN Flood)?网络
- 在三次握手过程当中,服务器发送 SYN-ACK 以后,收到客户端的 ACK 以前的 TCP 链接称为半链接(half-open connect)。此时服务器处于 SYN_RCVD 状态。当收到 ACK 后,服务器才能转入 ESTABLISHED 状态.
- SYN攻击指的是,攻击客户端在短期内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认。因为源地址是不存在的,服务器须要不断的重发直至超时,这些伪造的SYN包将长时间占用未链接队列,正常的SYN请求被丢弃,致使目标系统运行缓慢,严重者会引发网络堵塞甚至系统瘫痪。
- SYN 攻击是一种典型的 DoS/DDoS 攻击。
如何检测 SYN 攻击?socket
- 检测 SYN 攻击很是的方便,当你在服务器上看到大量的半链接状态时,特别是源IP地址是随机的,基本上能够判定这是一次SYN攻击。在Linux/Unix 上可使用系统自带的 netstats 命令来检测 SYN 攻击。
如何防护 SYN 攻击?学习
- SYN攻击不能彻底被阻止,除非将TCP协议从新设计。咱们所作的是尽量的减轻SYN攻击的危害,常见的防护 SYN 攻击的方法有以下几种:
- 缩短超时(SYN Timeout)时间
- 增长最大半链接数
- 过滤网关防御
- SYN cookies技术
广播
受限的广播spa
- 受限的广播地址为255.255.255.255。该地址用于主机配置过程当中IP数据报的目的地址,在任何状况下,router不转发目的地址为255.255.255.255的数据报,这样的数据报仅出如今本地网络中。
指向网络的广播计算机网络
- 指向网络的广播地址是主机号为全1的地址。A类网络广播地址netid.255.255.255,其中netid为A类网络的网络号。
- 一个router必须转发指向网络的广播,但它也必须有一个不进行转发的选择。
指向子网的广播
- 指向子网的广播地址为主机号为全1且有特定子网号的地址。做为子网直接广播地址的IP地址须要了解子网的掩码。例如,router收到128.1.2.255的数据报,当B类网路128.1的子网掩码为255.255.255.0时,该地址就是指向子网的广播地址;可是若是子网掩码为255.255.254.0,该地址就不是指向子网的广播地址。
指向全部子网的广播
- 指向全部子网的广播也须要了解目的网络的子网掩码,以便与指向网络的广播地址区分开来。指向全部子网的广播地址的子网号和主机号为全1.例如,若是子网掩码为255.255.255.0,那么128.1.255.255就是一个指向全部子网的广播地址。
多播
- 多播又叫组播,使用D类地址,D类地址分配的28bit均用做多播组号而再也不表示其余。
- 多播组地址包括 1110 的最高 4bit 和多播组号。它们一般能够表示为点分十进制数,范围从 224.0.0.0 到 239.255.255.255。
- 多播的出现减小了对应用不感兴趣主机的处理负荷。
多播的特色:
- 容许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。能够大大的节省网络带宽,由于不管有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包
多播技术的核心就是针对如何节约网络资源的前提下保证服务质量。
简述一下ping的原理
- ping就是给目标IP地址发送一个 ICMP 回显请求,并要求对方返回一个 ICMP 回显应答来肯定两台网络机器是否连通,时延是多少。

- 在 ICMP 逐层封装的过程当中,须要知道源IP、源MAC地址、目的IP、目的MAC地址,前三者是已知的,只须要获取目的MAC地址便可:
- 若在同一网段,只须要发送ARP广播;
- 若不在同一网段,发送ARP广播给交换机,交换机若没有缓存目的IP对应的MAC地址,它会再转发该ARP广播包。