最近想花些时间学习下计算机网络知识,修炼下。以前买本书TCP/IP卷一,看了一点,放下了,很抽象...最近在网上找了个视频教程,老师讲的很有意思,看过了这个教程,回头再看那本经典的TCP/IP会好很多。
个人觉得想学习计算机网络,如果没啥基础,上来就看课本不太可取,本身这门课程就很底层,直接看书就很抽象...我上大学的时候学这门课程本想好好听,但是实在听的累,只知道个概念,没有留下什么很深的感触,比如说这个包这么传递,这个帧这么封装,都是一些ppt演示的静态图,你很难烙印在脑海里。视频里讲课的时候用一些工具来演示,就很具体,留下很深印象。尤其讲网络层传输层用的抓包工具,特别细致,协议里每个字段的定义,都能在抓包里看到,就让你感觉,哦哦原来如此。哈哈,的确这样...(顺便抓包工具Wireshark这个很不错~下载地址:https://www.wireshark.org/#download。帮助学习网络。)
物理层和链路层的大纲(学知识以后,能总结出大纲才是消化了
带有冲突的载波监听,在一个集线器连接的各个计算机通信的时候,如果发现线上有信号,那么就会冲突等待。。
数据帧的格式,有帧头,帧尾,数据包(网络层的数据)。帧头有首部标识,类型标识(网络层数据的类型);帧尾有尾巴表示,FCS检验序列。链路层会对数据帧进行差错校验,对的接收,不对的舍弃。它不会进行纠错,只会验错。纠错的功能是传输层的事了。
CRC循环冗余校验算法。
扩展以太网的范围:
开始用集线器之间连接,但是载波监听冲突,造成通信利用率比较低。
然后出现了网桥设备,网桥可以根据MAC地址识别,是不是把帧传播到网桥另一端。
后来网桥的口多了,慢慢演变成交换机了。交换机可以识别MAC,它是一个存储转发的设备。端口有这个能力,维护了一个MAC地址表。这和集线器hub就完全不同了,集线器就是个放大信号的设备,直接就是个网线,信号接着往前走了。所以说交换机是链路层上的设备,而hub是物理层上的设备。
ARP协议,通过广播发送包,请求MAC地址...只在一个网段的。不会跨路由器。
有意思的是ARP欺骗,把错误的MAC地址告诉那个机器。这样发消息都发不到目的机器。
ping 命令
利用ICMP协议
TTL(生存时间time to live)每过一个路由器就减1。这样可以保证一个包别循环的在网络里传递。
ping命令可以指定TTL大小。
windows下查看ping参数
ping /?
ping hostip -l 2 (通过l参数大小,可以知道包达到目的主机需要经过哪些个路由。挺有意思
一般情况下:linux系统ttl是64,windows是128,unix是255,根据ping可以大致推测出来这个服务器的系统。
traceroute ip 可以跟踪路由情况
IGMP
网络传输有几种常见方式:
1.点到点 一个机器对一个机器
2.广播 arp协议就是典型的广播,传给这个网段的所有机器,不跨路由
3.组播也叫多播 多播可以跨路由
数据链路层 一个帧数据区最大存储1500个字节 MTU最大传输单元
网络层 一个数据包数据区最大存储65535个字节
导致高层的数据包如果过大,到底层的帧,就需要分片。。
版本表示,是v4还是v6啥的
首部长度表示,该数据包的首部
区分服务表示,这个包着不着急让路由传。比如聊天的包快点传,邮件的包这种就稍微等人家传完再整。
标识表示,是包的号,比如一个大包被链路层分片了,那么这个几个分片的标识是同一个号。
标志表示,这个包是不是分片,后边还有没有分片了more fragment。
片偏移表示,一个大包被分片以后,这个首字节的长度。偏移了多少的意思offset
TTL表示, 生存时间
协议表示,这个数据包是利用的啥协议,交给谁去处理。
首部校验和表示,顾名思义,首部的这些个字节,通过一个算法,生成校验和。接收端再根据这个校验。
源地址表示,发送机的ip
目标地址表示,接收机的ip
静态路由:
需要管理员告诉路由器,所有没有直连的网络下一跳给谁
21:ftp
22:ssh
23:telnet
25:smtp
110:pop3
53:dns
80:http
443:https
开启防火墙,一般可以控制进入的流量,不会拦截出去的流量
UDP 不建立会话 不可靠传输,当然效率就高些
TCP 可靠传输,建立会话,面向连接的传输层协议,全双工通信,面向字节的(8个二进制当成一个单位,比如一个字母a是一个对于TCP来说)
TCP是点到点通信,这个点表示套接字:一个IP和一个port。
发一个接一个,等待的时间太长,为了提高传输效率,利用滑动窗口技术。
TCP传输的头部信息:
示例:
SYN 发起建立会话的标记
syn攻击,让你保持等待和别人去建立连接
TCP可靠传输的实现:
TCP的流量控制:
TCP的拥塞控制:
未完待续....