TCP/IP 协议大致的概念
最近在看《图解HTTP》和《HTTP权威指南》,对TCP/IP大致过了一下。
TCP/IP 不仅仅是TCP 和 IP
TCP/IP 是协议族,与之相对的事IEEE等标准组织设定的OSI七层。这里面涉及到的协议有:
- TCP 传输控制协议 传输层。
- IP 网际协议 网络层。
- ARP 地址解析协议 数据链路层协议。
- UDP 用户数据报协议 传输层。
- ICMP Internet控制报文协议 网络层。
- DNS 域名系统 为ip绑定逻辑名称。
- HTTP 超文本传输协议 应用层。
作为一名java web工程师,可以说90%涉及的工作是HTTP协议,如果做IM或者云存储可能会涉及到TCP+UDP。所以,HTTP和TCP,是基本功。
为什么要分层,要能理解,每一层的意义所在
作为分隔两地的计算机系统上不同应用程序,他们之间如果需要通信,首先要知道对方是谁。
- 传输层是怎么区分不同对象的,ip:端口。
- 然后我要传输数据,数据按照什么方式打包送过去呢?
- 报文 Message,报文是什么,是用户自定义长度(相对于底层协议来说)的二进制数据。然后在Message前加上传输层报文。
- 然后我要传输数据,数据按照什么方式打包送过去呢?
- 传输层的数据到网络层,然后网络层是怎么区分不同对象的,ip。
- 然后我要传输数据,数据按照什么方式打包送过去呢?
- 报文 Package,是我网络层无差别地对你传输层大数据报进行切割的小单位。然后在package前加上网络层报文。
- 然后我要传输数据,数据按照什么方式打包送过去呢?
- 网络层到数据链路层,怎么办,这个时候,已经没有ip了,有的是什么,mac,真实物理世界的身份证。
- 然后我要传输数据,数据按照什么方式打包送过去呢?
- 分组 frame, 进一步进行切割的单位。然后在frame前加上链路层报文。
- 然后我要传输数据,数据按照什么方式打包送过去呢?
可以看到,这三层的行为模式很相近。那为什么要分为三层。
因为,数据传输要解决的问题太多了。通过对问题进行归类,不同层次来专门解决不同问题。有点工业2.0,福特生产线的味道。
传输层,要解决的事,两个应用程序间传输数据。其实问题很抽象,因为层次高。所以,只设定两个应用程序的地址(ip+端口)就好了。
网络层,要解决在跨越多个网络,长距离的情况下,我怎么找到另外一个主机,其实核心就是路由寻址。
然后,就进入了“最后半公里”,将ip转换为mac,在链路层传输分组。
分层,也是大型软件设计的工程学思想。
还有,每到下面一层时,一般都会进行数据切片分割?
因为需要复用。复用的场景是不同的。比如在数据链路层,有很多编码方式,还有什么频分复用、码分复用、时分复用等等,通过不同的编码方式来进行复用。
在网络层也是,通过分片,我可以走多个通路。并行的思想。
在传输层,有一个概念叫带宽,就算我能一下把所有数据给你送过去,你机器的内存难道不会撑爆吗。
TCP/IP 协议大致的概念的更多相关文章
- linux高性能服务器编程 (一) --Tcp/Ip协议族
前言: 在学习swoole入门基础的过程中,遇到了很多知识瓶颈,比方说多进程.多线程.以及进程池和线程池等都有诸多的疑惑.之前也有学习相关知识,但只是单纯的知识面了解.而没有真正的学习他们的来龙去脉. ...
- 【温故而知新】Tcp/Ip协议——总览
Tcp/Ip协议 一.概念 “三网”:即电信网络.有线电视网络和计算机网络 标准(Standards) 描述了协议的规定,设定了最简的性能集. 协议(Protocol) 网络设备用于交换信息的系列规则 ...
- 网络编程的基本概念,TCP/IP协议简介
8.1.1 网络基础知识 计算机网络形式多样,内容繁杂.网络上的计算机要互相通信,必须遵循一定的协议.目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议. 网络编程的目的就是指直接或 ...
- OSI七层模型详解 TCP/IP协议
总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...
- TCP/IP协议(一)网络基础知识
参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...
- TCP/IP协议学习(四) 协议概述
生活中有舒适区,借口成为懒惰的护身符,学习也有舒适区,逃避便是阻止进步的最大障碍. 经过半年多嵌入式方面的工作和学习,我提高了很多,但同时我也对自己所面临的问题逐渐清晰: 1. 偏于实践,理论基础不牢 ...
- Android网络编程系列 一 TCP/IP协议族
在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...
- 二:熟悉 TCP/IP 协议
一篇文章带你熟悉 TCP/IP 协议(网络协议篇二) 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍. 一图看完本文 一. 计算机网络体系结构分层 计算机网络体系结构分层计算机网络体系结构分 ...
- 【转载】TCP /IP协议详解
首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...
随机推荐
- PHP获取汉字的转化为拼音字母实现程序
一个完整的php获取汉字拼音字母的实现程序,有需要的朋友可参考一下. <?php class GetPingYing { private $pylist = array( 'a'=>-20 ...
- Python中的*args和**kwargs
原文地址:http://www.linuxidc.com/Linux/2011-10/45083.htm 先来看个例子: ,2,3,4) foo(a=1,b=2,c=3) foo(1,2,3,4, a ...
- plist文件的读取
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"cinemalist" ofType:@"pl ...
- 使用 JavaScript 修改浏览器 URL 地址栏
现在的浏览器里,有一个十分有趣的功能,你可以在不刷新页面的情况下修改浏览器URL;在浏览过程中.你可以将浏览历史储存起来,当你在浏览器点击后退按钮的时候,你可以冲浏览历史上获得回退的信息,这听起来并不 ...
- hdu 4630 No Pain No Game
http://acm.hdu.edu.cn/showproblem.php?pid=4630 离散化+树状数组 将数组 *a 从后向前遍历 遍历到 a[x] 的时候 再枚举a[x]的约数 假如 约数 ...
- hdu 4602 Partition
http://acm.hdu.edu.cn/showproblem.php?pid=4602 输入 n 和 k 首先 f(n)中k的个数 等于 f(n-1) 中 k-1的个数 最终等于 f(n-k+1 ...
- Pogo-Cow
题目大意: 给出直线上N个点的坐标和分数,任意选一个点出发,每次只能跳到另外一个点上并获得相应的分数,且每次跳的方向要相同,本次跳的距离不小于上次跳的距离. 求最大得分. N<=1000. ...
- Apache目录结构(一)
一.Apache 目录结构 bin: 该目录用于存放apache常用的命令,比如httpd cig-bin:该目录存放linux下的常用命令 .sh conf:存放配置文件httpd.conf,在ht ...
- Hadoop c++开发
假设你有上百G的数据,你要统计出这些数据中,含有某些你感兴趣的内容的数据的有多少条,你会怎么做?在硬件条件允许的情况下,用hadoop并行计算是一个不错的选择. 为了使本文得以清晰地说明,我们不妨假设 ...
- python 中的json解析库
当一个json 数据很大的时候.load起来是很耗时的.python中常见的json解析库有cjson,simplesjson,json, 初步比较了一下, 对于loads来讲 simplejson ...