《图解TCP/IP》读书笔记

越发相信我之前认为的“用以致学”的观念了!  死记硬背的那些知识点,那么久时间过去大部分都忘了,但是遇到了一次ICMP包实际应用的情况,这个IP协议的辅助协议已然牢记在心!

学了不用,或者没有需求的情况下去学,学习的意义和效率都堪忧。这一点和高中到大学的数学课程教育很像,我很清楚数学的重要性,但是以前学的数学知识基本都忘记了,这也是学了不用的原因吧。

2015.10.24 补充工作中遇到的实际问题:使用ICMP定位问题

有一次从服务端发出TCP消息,但是手机客户端没有收到。设服务器为A,客户端为B。

使用wireshark抓包发现,每次A→B的TCP的数据发出去之后,都会收到一个B→A的ICMP包,然后就是A→B的TCP重发,如此重复几次。

扒开ICMP包看到一个提示:port xxxx unaviliable。 下面一段说明可以解释原因:

 

那个提示就是一个错误报告,说明客户端发起连接的那个端口不可达了。

 

现在只是胡乱地记了一下,有空了补上比较易懂的图。

第一部分 基础知识

1.TCP/IP是协议族,包括ISO7层模型中的多层中的协议。 如ip、tcp、udp、http等。

2.ISO7层模型   方便记忆的叫法:物理数据链路 网络传输 会话表示应用

第二部分  数据链路

1.数据在网络中传输的处理顺序 

循环冗余校验&应用包头及数据(应用层)

-目标端口号&源端口号(传输层tcp/udp...)

-上层协议类型&目标ip&源ip(网络层 即ip层)

-以太网类型&发送端mac地址&接收端mac地址(数据链路层)

-物理传输

数据接收时处理的顺序相反 
2.交换机工作在第2层   即数据链路层   路由器工作在第3层 网络层。  数据链路是小型以太网连通,网络负责通过ip连接各个数据链路组成互联网
第三部分  IP协议
1.面向无连接  制定行程表做火车然后飞机然后汽车,交通工具就是数据链路,行程表就是路由表,各站点就是节点(主机&路由器,有IP)
2.ip由网络标识和主机标识组成, 192.168.128.10/24   就代表从0数到24位是网络标识,也就是192.168.128为网络标识,10为主机标识
ip分为ABCD四类 二进制开头分别为0 10 110 1110 网络标识分别占7位  6+8位  5+8+8位   4+8+8+8位  
D类IP木有主机位,一般用于多播
其他类一个网络内最多主机个数正常算,C类的少两个,一个0.0.0.0为主机不可用时使用,一个1.1.1.1为广播时使用
广播不可穿透路由器,多播可以,但是要求路由器和主机都是多播地址
3.子网掩码,连续1+连续的0,一共32位组成,有多少个1就代表ip有多少位是网络位,配合ip唯一确定一个地址用于灵活制定网络位的长度,以避免资源浪费
4.ip报文可能会在路由器被分片,在主机组合,路由器不会组合,因为下一层路由器还有可能分片
 
第四部分  IP协议相关技术
1.DNS根服务器存储第一层DNS服务器的IP地址。  存储内容包括 通过域名找IP:A记录、CNAME:主机别名对应的规范名称、通过IP找域名:PTR  上下层DNS服务器的映射 NS记录
2.DCHP 自动设置IP地址,同一管理IP地址分配的服务。
3.NAT  主机通信的过程中公网和私网IP的转换,实现通过一个IP和多台主机通信
4.IP隧道 在IPv6和IPv4的网络之间通信时,IP首部相互无法识别,此时就通过IP隧道在IPv6的IP协议头部之后附加一个IPv4的IP头部
5.ARP 在同一个网段内,发出带IP地址的ARP请求包,对于IP地址的设备收到请求后,返回ARP响应包,告知其MAC地址,用于通过IP地址查询MAC地址,以使数据可以在不同网段之间传输。虽然知道IP地址就知道设备位置了,但是数据链路中实际传输的时候还是需要MAC地址的,所以需要ARP协议。反过来,通过MAC地址获取IP的协议是RARP。
6.ICMP。用于确认IP包是否成功送达到目标地址,PING命令就是用这个协议实现的。
第五部分  传输层 TCP、UDP
1.ip报文头部里边记录上一层协议类型,传输层的头部会记录端口号,以确定数据发给哪个应用程序。系统会开启各种守护进程,通过不同的端口号把数据发给不同协议的守护进程
2.相同传输协议不能使用同一个端口,但是不同的传输协议是可以使用同一个端口的,数据被分发到不同的进程了
3.UDP是面向无连接的协议,只管发,其他的如收到确认、异常重发全不管,都交给上层的应用去处理
4.TCP的主机每次收到数据,都会发送一个ACK,数据有误则回复NACK(negtive ack)。根据网络情况,超时没收到ack包就重新发送
5.建立连接:SYN—ACK+SYN—ACK   断开连接:FIN—ACK—(发送没发送完的消息)—FIN—ACK,客户端服务端都可以发起断开连接,发起FIN后处于半关闭状态,只接受消息,不发送消息,发起并收到FIN各一次之后才关闭连接
6.使用窗口来提高网络状况不佳时的传输效率,即不是  发送-ack-发送-ack,而是发送发送发送-ackackack-发送发送发送-ackackack ......
7.拥塞控制,设置拥塞窗口,慢启动,最初设置拥塞窗口大小为1,每收到一个ack拥塞窗口+1(或者根据一个阈值来增加),比较拥塞窗口和接收端窗口大小,每次发送比较小的那个数量个报文段
第六部分  路由协议
未关注
第七部分  应用协议
1.远程登录 telnet 通过一条TCP连接向主机发送文字命令并在主机上执行
2.SSH 加密版本的telnet,并支持更多功能
3.文件传输  FTP 使用TCP协议,开启两个TCP连接,一个用于控制,一个用于文件传输
4.邮件 SMTP  TCP协议实现  Simple Mail transfer protocol。
5.HTTP 基于TCP连接。http1.1每次会话都建立一个tcp连接,完成后关闭,tcp1.1允许在一个tcp连接上进行多次会话
6.网络管理  SNMP 使用UDP实现的协议
7.多媒体、即时通讯等技术,即使丢一些包,也喜欢网络延时快一点,由于UDP不用像TCP一样做流控制、拥塞控制、重发机制等,其数据到达主机要快一些,这类应用多采用基于UDP实现的协议
 
 
posted @ 2015-04-27 16:10  桃子夭夭  阅读(958)  评论(0编辑  收藏  举报