Computer Network Basic
基本概念
先要明白一个道理,学习网络的目的就是如何让网络中的计算机相互通讯,也就是说要围绕着”通”(通则不痛)这个字来学习和理解网络中的概念,而不是只为背几个名词。
TCP/IP五层协议
层级 | 典型协议 |
---|---|
应用层 | TELNET/FTP/SMTP/HTTP |
传输层 | TCP/UDP |
网络层 | IP |
网络接口层 (数据链路层和物理层) |
常用命令:
traceroute/tracert(based on UDP and ICMP):取得从源地址到目标地址网络路径。might be intercepted by firewall
tcptraceroute
ping
各种网络设备:
- 交换机:三层交换机工作在网络层,二层交换机工作在链路层
- 集线器
- 路由器:工作在网络层
IP
网络层:网络层仅负责两台主机之间的通信。
一般内网的ip地址是以192.168开头的,这样很容易区分公网和内网的ip地址。
子网掩码:将IP地址和子网掩码都换算成二进制,然后进行与运算,结果就是网络地址。
网络分类:
- A
- B
- C
- D 多播用D类地址
网络号、主机号:全0与全1
TCP/ UDP
传输层协议:负责两台主机间进程间的通信。
对比项 | TCP | UDP |
---|---|---|
连接性 | 面向连接的 | 无连接的 |
可靠性 | 提供可靠交付 | 尽最大努力交付 best effort delivery |
传输单位 | 报文段 | 用户数据报 |
TCP字节流:send()写到发送缓冲区,发送,接收缓冲区接收,最后recv()读;UDP每次send()对应一段报文;
TCP一对一,而UDP适合广播;
TCP应用场景:对网络通讯质量有较高要求,比如HTTP、HTTPS、FTP等传输文件协议,POP、SMTP等邮件传输的协议。常见使用TCP协议的应用如下:浏览器,用的HTTP;FlashFXP,用的FTP;Outlook,用的POP、SMTP;Putty,用的Telnet、SSH;QQ文件传输。
UDP应用场景:当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。常见使用UDP协议的应用如下:QQ语音、QQ视频、TFTP。
HTTP
http请求报文结构
HTTP状态码
重定向与转发的区别
长连接与短连接,长连接如何正确处理?
HTTPS
HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)
其他
输入网址www.baidu.com,这个过程所涉及到的协议及动作?
1. DNS域名解析(浏览器缓存、操作系统缓存、路由器、ISP的DNS服务器、根域名服务器),把域名转化成IP地址;
2. 与IP地址对应的服务器建立TCP连接(经历三次握手:SYN,ACK、SYN,ACK);
3. 以get,post方式发送HTTP请求,get方式发送主机,用户代理,connection属性,cookie等;
4. 服务器分析HTTP请求,生成HTTP响应(可能是HTML、图片等)后,将响应发送给客户端浏览器;
5. 浏览器获得服务器的响应,在分析HTML时,若发现引用了其他资源,例如css、图片等,则发起HTTP请求,得到响应资源。
ping访问www.baidu.com用到哪些协议?
1、直接ping网站的话,后面跟的是地址,所以要先将域名转换为ip地址,即用到了DNS;
2、获取到ip地址后,在数据链路层是根据MAC地址传输的,所以要用到ARP解析服务,获取到MAC地址;
3、ping功能是测试另一台主机是否可达,程序发送一份ICMP回显请求给目标主机,并等待返回ICMP回显应答,(ICMP主要是用于ip主机、路由器之间传递控制信息,控制信息是指网络通不通,主机是否可达);
4、TCP的话,不涉及数据传输,不会用到。
DNS解析的过程:
1. 浏览器缓存,地址栏输入net-internals/#dns可查看;
2. OS缓存,cmd中输入ipconfig /displaydns可查看,ipconfig /flushdns可清除;
3. host文件;
4. DNS Server;
5. ……
6. ……
7. ……
8. ……后面四个用的很少
使用工具分析http报文和TCP报文
学习理论时结合实例分析报文结构非常有助于理解。一般分析http/https用fiddler,tcp/udp一般用wireshark。
wireShark用法:
http://blog.jobbole.com/70907/
http://blog.****.net/holandstone/article/details/47026213
http://blog.****.net/ningxuezhu/article/details/39892091/
查看报文经常要用到过滤规则来查看特定端口或IP的报文,参见:
wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容) 实例介绍。
比如我这里只看两台机器之间的报文:
( ip.dst== 192.168.8.50 and ip.src== 192.168.8.59)
or( ip.dst== 192.168.8.59 and ip.src== 192.168.8.50)
通过wireshark分析tcp报文:
http://blog.****.net/fei003/article/details/69664887
注意:
1. windows下打开WireShark要以管理员身份运行, 否则可能无法识别网卡。
2. Wireshark默认匹配安装的是WinPcap,但是WinPcap不能抓取本地回环数据。NPcap是在WinPcap的基础上进行优化开发的,可以抓取本地数据,如果已安装WinPcap的请卸载,最好Wireshark一起卸载掉,重新安装,先安装NPcap,再安装Wireshark。
参考资料:
https://www.zhihu.com/question/28943943?sort=created
http://www.imooc.com/article/17411