1. 网络基础
.note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB","STHeiti","Microsoft YaHei","WenQuanYi Micro Hei",SimSun,Song,sans-serif;}

.note-content h2 {line-height: 1.6; color: #0AA89E;}
.note-content {background: #FFFFFF;}
.note-content h1 {color: #7AB3A7;}
.note-content h3 {color: #147A67;}

1. 网络基础

1.2 TCP/IP四层模型

1.应用层<---------------------------应用层,表示层,会话层
2. ↓
3.传输层<---------------------------传输层
4. ↓
5.网际互联层<------------------------网络层
6. ↓
7.网络接口层<------------------------数据链路层,物理层

OSI 7层模型仅仅只是模型,而在实际传输中应用的是TCP/IP 4层模型。举个栗子,OSI 7层模型仅仅是个车模,而TCP/IP 4层模型是实际生产的原型车。

○ 网络接口层

它负责监视数据在主机和网络之间的交换

而事实上,TCP/IP本身并没有定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。

地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。

Windows下可以使用arp -a查看ARP(linux下也可以使用arp),它的作用是把IP地址翻译成网卡物理地址(MAC地址)。再举个栗子,IP地址相当于门牌号,而MAC地址相当于屋子里的某一个人,数据的传输需要像邮差送信,信送到某户人家,然后再被送到某个人的手中。IP地址是在公网中传输需要,而MAC地址是在局域网中传输需要。

○ 网际互联层

它主要解决主机到主机的通信问题

它所包含的的协议设计数据包在整个网络上的逻辑传输。该层有三个主要协议:网际协议(IP)互联网组管理协议(IGMP)互联网控制报文协议(ICMP)

其中ICMP协议就是我们用来ping的协议。平时我们说ping一下,看是否能够ping通:

1.[KANO@kelvin ~]$ ping 114.114.114.114 -c 4
2.PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
3.64 bytes from 114.114.114.114: icmp_seq=1 ttl=90 time=33.3 ms
4.64 bytes from 114.114.114.114: icmp_seq=2 ttl=71 time=34.9 ms
5.64 bytes from 114.114.114.114: icmp_seq=3 ttl=79 time=34.9 ms
6.64 bytes from 114.114.114.114: icmp_seq=4 ttl=89 time=34.6 ms
7.
8.--- 114.114.114.114 ping statistics ---
9.4 packets transmitted, 4 received, 0% packet loss, time 3003ms
10.rtt min/avg/max/mdev = 33.300/34.478/34.982/0.703 ms
11.

这里就是利用了ICMP协议,给我们指定的计算机发送一个数据包。如果它回应了,那么证明我们两个的网络是通的。

○ 传输层

它为应用层实体提供端到端的通信功能,保证了数据包的顺序传送以及数据的完整性。

该层协议定义了两个主要的协议:传输控制协议(TCP)用户数据报协议(UDP)

TCP/IP三次握手



比如说:如果主机A想跟主机B进行通信

主机A首先发起一个握手信号SYN给主机B”问你在吗”—————->主机B收到握手信号SYN,就发送回应包ACK给主机A”我在”,同时也发送一个信报SYN问”你还在吗”—————->这个时候主机A就会发送一个ACK响应它说”我在,我要跟你发送数据了”——————>最后建立通信,主机A向主机B发送信息

在数据传输过程中,双方始终有沟通,只要有一个数据传错了,那么主机B就会马上告诉主机A说传错了,要重传。

所以TCP/IP协议是面向连接可靠的协议

而UDP协议,不管你在不在,就直接把数据发出去。它的好处是更快,但是有可能会丢包

简单说来,TCP协议像打电话,接通后问我是谁你是谁,双方确认之后,开始正式交谈,交谈中说错了对方会发出警告,然后重说。而UDP协议更像发短信,一条短信发过去,能及时收到,但是也有可能发送不成功。

QQ聊天的时候使用的就是UDP协议,发送过去更快,但是有的时候会提示”你发送的信息没有到达”

○ 应用层

它为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等。

数据封装过程

1.应用数据------------------------------------------------->字节流(数据)
2.应用层--------------------------------------------------->FTP头| 数据
3.传输层-------------------------------------------->TCP头| FTP头| 数据
4.网络层-------------------------------------->IP头| TCP头| FTP头| 数据
5.数据链路层-------------------------->以太帧头| IP头| TCP头| FTP头| 数据
6. ↑ IP数据报 ↑
7. 以太帧头| 目的地址| 源地址| 包类型| 包数据 | CRC
8. ↑IP数据报↑

最新文章

  1. 关于印发利用DEM确定耕地坡度分级技术规定(试行)的通知
  2. 无题的题 &amp; 模拟退火...
  3. iOS 8.1.3 “各路助手挺尸”、“封杀一切助手
  4. OpenCV IplImage FlyCapture2 Image Conversion 两种图像类的相互转化
  5. 二分图点染色 BestCoder 1st Anniversary($) 1004 Bipartite Graph
  6. 深入学习Oracle分区表及分区索引
  7. Word删除复制后产生空行
  8. hdu2044java
  9. Python给小说做词云
  10. Python初学——多进程Multiprocessing
  11. 工作常用git命令
  12. SQLite学习手册(实例代码&lt;一&gt;)
  13. 同样级别iOS程序员,为啥比我菜的程序员薪资都比我高?
  14. CSU1333最短路问题SPFA
  15. ans Single VIP LLB and SLB config
  16. springmvc实现文件上传
  17. ROS-by-example的安装
  18. Jquery停止动画
  19. c# winform调用摄像头识别二维码
  20. 万恶的deferred_segment_creation(延迟块分配)

热门文章

  1. MYSQL报Fatal error encountered during command execution.错误的解决方法
  2. JavaScript 中 关于 this 的学习笔记
  3. 在.NET中使用iTextSharp创建/读取PDF报告: Part I [翻译]
  4. FIFO算法
  5. hadoop生态圈安装详解(hadoop+zookeeper+hbase+pig+hive)
  6. HDU 1017 - A Mathematical Curiosity
  7. nginx 学习笔记【持续更新...】
  8. Android L 之 RecyclerView 、CardView 、Palette
  9. jquery ajax后台向前台传list 前台用jquery $.each遍历list
  10. 利用C#轻松创建不规则窗体