说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋。

万事开头难,然后中间难,最后结尾难。。。哈哈,不扯这种心灵砒霜了,讲讲我这个小菜鸟是如何从对网络一窍不通到现在可以完整的说出一个报文是如何转发的初级水平,先看一下TCP/IP的介绍:

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

如此深奥的解释,相信没几个人能看的懂。。。,其实你可以简单理解为,互联网传输是分层的,就像盖房子一样,一层累一层。
举个简单的例子,就拿我们平时最常见的上网,打开浏览器,输入www.baidu.com,浏览器上就会显示百度的界面,可能一秒都不到的时间,事实上我们的报文已经走了个来回。这么说还是有点抽象,但是要给大家讲的一点就是,在互联网的世界,一切的数据都是以报文的形式传送的,而这份报文,大致是长这样的:

你可能过会说,这是什么玩意,但事实上报文就是这么的不讲道理,如果你面对的是这样一个个十六进制的字符,恐怕会疯的,因为你根本无从下手,所以我们需要分层次清晰得划分一下报文的结构,划分的层次如下:

那为什么要叫TCP/IP协议栈内,这些协议和栈有什么关系呢,大家应该都知道栈是一种先进后出的数据结构,那这和TCP/IP协议有什么关系呢?我们就拿一个HTTP报文来说吧,HTTP报文属于应用层协议的报文,我们输入网址,首先会调用到DNS协议(域名协议,后面会讲到),然后把我们输入的网址转换为IP地址,这个IP地址大致就相当于现实生活中每个人的身份证一样,是每个网页唯一的标识,关于IP地址,后续我会详细介绍,IP协议属于网络层的协议。

我们先将HTTP报文压入一个栈中(就好像是在分装报文),然后是IP,不对,我们貌似漏了一个传输层啊,别急别介,HTTP报文在传输层用的是TCP协议,好,我们把TCP压入栈中,再讲IP层也压入栈中,至于链路层的话,就用最常见的以太网就OK了,好了,现在我们的栈里面从头至尾依次是以太帧头-IP协议-TCP协议-HTTP协议,然后我们先忽略最底层的物理层,假设这个封装好的栈一样的报文漂洋过海,来到了它的目的地(至于怎么过来的,我们后续也会讲到),当对端收到这个报文以后,也就是我们封装好的这个栈一样的东西以后该怎么办呢?

会不会也是先拿HTTP呢?因为这个报文是我们构造的一个栈,所以说它的顺序肯定也是栈,因此拿取的顺序就是以太帧头-IP协议-TCP协议-HTTP协议,发现没,最先被封装入的HTTP报文是最后才被拿出来的,这中间的细节如果能全部掌握,那基本商就算是入门了,关于这部分东西,我会在后面详细介绍,现在有这个概念就可以了。

回顾一下,写的有点乱,总结起来就是互联网是分层的,协议是如何层层递进封装和解分装的,记得大学里计算机网络是自顶向下,也就是先从应用层讲起,我觉得这样不太好,所以我会从底层讲起,也就是自底向上的学习顺序,一步步解开网络的神秘面纱!

浅谈TCP IP协议栈(一)入门知识【转】的更多相关文章

  1. 浅谈TCP IP协议栈(三)路由器简介

    读完这个系列的第一篇浅谈TCP/IP协议栈(一)入门知识和第二篇浅谈TCP/IP协议栈(二)IP地址,在第一篇中,可能我对协议栈中这个栈的解释有问题,栈在数据结构中是一种先进后出的常见结构,而在整个T ...

  2. 浅谈TCP IP协议栈(二)IP地址

    上一节大致了解TCP/IP协议栈是个啥东西,依旧是雾里看花的状态,有很多时候学一门新知识时,开头总是很急躁,无从下手,刚学会一点儿,却发现连点皮毛都不算,成就感太低,所以任何时候学习最重要的是要在合适 ...

  3. 浅谈TCP IP协议栈(四)IP协议解析

    通过之前的网络层基础知识,IP地址以及路由器的简介,大家应该对于TCP/IP有一个大致的了解,在脑海里应该对于网络的几个基础概念有个大概的了解,简单点说整个协议栈就是在做一件事,规定网络报文(网络传输 ...

  4. 浅谈TCP/IP网络编程中socket的行为

    我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...

  5. 测试那些事儿—浅谈TCP/IP协议

    TCP/IP协议是一系列网络协议的总和,是构成网络通信的核心骨架. TCP/IP的工作原理通俗的讲就是一个主机的数据要经过哪些过程才能发送到对方的主机上. TCP/IP协议采用四层结构,分别为应用层, ...

  6. 浅谈TCP/IP(new 常见面试问题)

    1. TCP/IP重传机制,如何保证消息读到一个完整内容再反序列化 2. TCP四次回收比三次握手多了什么操作,什么时候会进入Time_await状态 3.

  7. 理解TCP/IP协议栈之HTTP2.0

    1 前言 前面写了10多篇关于Redis底层实现.工程架构.实际应用的文章,感兴趣的读者可以进行阅读,如有问题欢迎交流: 1.Redis面试热点之底层实现篇-12.Redis面试热点之底层实现篇-23 ...

  8. 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)

    前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...

  9. C1000k 新思路:用户态 TCP/IP 协议栈

    现在的服务器支撑上百万个并发 TCP 连接已经不是新闻(余锋2010年的演讲,ideawu 的 iComet 开源项目,WhatsApp 做到了 2.5M).实现 C1000k 的常规做法是调整内核参 ...

随机推荐

  1. 初始Oracle

    1.Oracle简介 Oracle体系结构: 先是用户进程发起一个请求到服务器进程(PGA  ,  一个PGA对应一个请求),然后PGA在发送给SGA.SGA有三大块分别是:共享池,数据缓冲区,日志缓 ...

  2. C/C++数据在内存中的存储方式

    目录 1 内存地址 2 内存空间   在学习C/C++编程语言时,免不了和内存打交道,在计算机中,我们存储有电影,文档,音乐等数据,这些数据在内存中是以什么形式存储的呢?下面做一下简单介绍. 本文是学 ...

  3. 智能压缩,摆脱用 Gzip 还是 Brotli 的纠结

    近日,又拍云上线了“智能压缩”功能,同时支持 Gzip 和 Brotli 压缩算法,在节约流量的同时,进一步减少用户的等待时间. CDN 流量问题一直以来是大家关注的重点,又拍云针对流量节约上线了一系 ...

  4. expect--自动批量分发公钥脚本

    1.在使用之前,先安装epel源,yum install expect -y2.写分发脚本,后缀为exp #!/usr/bin/expect set host_ip [lindex $argv 0] ...

  5. Vue轻松入门,一起学起来!

    我们创建一个项目,这个项目我们细说Vue. 一.如何在项目中添加模块 我们通过npm 进行 安装 模块. 首先我们通过cmd.exe cd进入你的项目根目录,必须存在package.json文件,安装 ...

  6. C++实现多级排序

    stl中sort详细说明 实现功能:期末开始4位同学的成绩,按多级排序,排序规则为:按数学从小到大,如果数学相等,则按语文从大到小排列,如果语文相等,则按英语从小到大排列,如果英语相等,则按历史从大到 ...

  7. Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享

    小伙伴们好久不见!最近略忙,博客写的有点少,嗯,要加把劲.OK,今天给大家带来一个JavaWeb中常用的架构搭建,即Nginx+Tomcat搭建服务集群,然后通过Spring Session+Redi ...

  8. 基于Spring cloud Ribbon和Eureka实现客户端负载均衡

    前言 本案例将基于Spring cloud Ribbon和Eureka实现客户端负载均衡,其中Ribbon用于实现客户端负载均衡,Eureka主要是用于服务注册及发现: 传统的服务端负载均衡 常见的服 ...

  9. springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用

    百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...

  10. 基于.Net进行前端开发的技术栈发展路线(二)

    前言 上一篇<我的技能树>文章分享了我的技能成长过程,还未完成,今天继续跟大家分享. 01 我的技能树 我的当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练.未 ...