Life is not a rehearsal

  "人生没有彩排"

参考资料TCP/IP入门经典 (第五版)

     TCP/IP详解 卷一:协议

一、什么是TCP/IP

  TCP/IP是一族定义了网络数据传输规则的协议,现在大多数的网络设备都使用TCP/IP协议进行通信

二、TCP/IP分层 

  1、分层

应用层
传输层
网络层
数据链路层

  

  2、各层的主要功能

    ● 数据链路层:处理通信电缆与接口的细节,将网络层传来的IP数据报转化为帧,再转化为比特流,使其能在通信介质之间传输

    ● 网络层:提供逻辑寻址的功能,使数据传输独立于硬件地址

    ● 传输层:为两台主机上的应用程序提供端到端的通信,提供了流量控制、错误控制和确认服务

    ● 应用层:处理特定的应用程序细节

  3、各层上的常见协议及简介

    各层上的协议

        (自己把书上的图重新画了一遍...)

    协议简介:

    ● TCP:提供可靠的传输层服务,面向连接

    ● UDP:为应用程序发送和接收数据报,无连接,不可靠

    ● IP:网络层的核心协议,提供逻辑寻址、路由选择等服务

    ● ICMP:IP协议的附属协议,用来与其他主机或路由器交换错误报文和其他重要信息

    ● IGMP:Internet组管理协议,用来把UDP数据报多播到多个主机

    ● ARP和RARP:用于将IP地址和硬件地址相互转换

三、一些重要的概念

  1、IP地址:IP地址是网络层抽象出来用一个32bit(IPv4)整数来表示的逻辑地址,用于唯一地标识网络上的每一台设备,常用的表示方法是点分十进制,如:192.168.1.1

     IP地址分类:

    各类IP地址的范围:

  2、物理地址(MAC地址):网络设备的身份标识,出厂时就已经固化在网络硬件当中,在以太网中使用48个bit来表示,常用6个以冒号分隔的十六进制的整数来表示,如: 00:0C:29:D2:58:6B

  3、端口号(port):端口号是应用程序对于传输层的一个身份标识,传输层通过端口号来区分不同的应用程序,TCP和UDP采用16bit的端口号来识别应用程序

  4、套接字(socket):由IP地址和端口号组合而成的地址,如:111.121.131.141.21指向IP地址为111.121.131.141的主机的21号端口

  5、子网掩码(mask):类似于IP地址的32bit的地址,可以区分网络号和主机号,用于判断IP地址是否在本地子网内

  6、域名系统(DNS):域名系统是一个分布的数据库,提供IP地址和主机名之间的映射信息

  7、IP首部的协议域:在IP首部中有一个长度为8bit的协议域,用于标识数据报来自于上层的哪一个协议

  8、封装:当用户从本机的应用程序发送数据到网络上的某一台主机时,数据将从协议栈的顶部往下,逐层添加相应的首部(和尾部),然后到达链路层转换为比特流发送到传输介质,这个过程称为封装。其过程如下:

  9、分用:当主机接收来自传输介质的数据时,比特流将从协议栈的底部往上,逐层去掉相应的首部(和尾部),并根据首部信息发送给指定的协议,最后根据端口号发送给应用程序,用户收到数据,这个过程称为分用。其过程如下:

  10、标准文档:关于TCP/IP标准,可以访问 RFC文档

四、简单描述一次数据传输的全过程

  假设现在我要从我的电脑上发送一份数据到某台主机,假设我使用传输层的TCP,那么具体流程将类似下面这样:

  注:这里不讨论更深的细节,比如IP分片、ARP解析、丢包等

封装:①~④

  ①我将数据准备好,并点击了发送,应用程序通过指定端口将数据发送至传输层的TCP;(应用层)

  ②TCP加上TCP首部(包含源端口号和目的端口号等信息)后封装为TCP分段,传输层将TCP分段发送至网络层的IP;(传输层)

  ③IP加上IP首部(包含本机的IP地址和目的IP地址等信息,已经经过DNS解析)后封装为IP数据报,网络层将IP数据报发送至数据链路层;(网络层)

  ④数据链路层加上以太网首部和尾部后将IP数据报封装为以太网帧,经过更细分的子层将以太网帧转化为比特流,然后传输到我所在的子网的路由器;(数据链路层)

IP寻址和路由选择:⑤~⑥

  ⑤子网的路由器将比特流转化为以太网帧,数据链路层将以太网帧去掉以太网首部和尾部,发送至IP层;(数据链路层)

  ⑥IP层检查数据报的IP首部,先根据子网掩码判断目的IP地址是否在本地子网内:(网络层)

    ● 如果目的IP地址在本地子网内,路由器会将数据报封装后经数据链路层发送给指定主机或路由器

    ● 如果目的IP地址不在本地子网内,那么路由器将数据报封装后经数据链路层发送给当前路由所在的子网的路由器(向上一层的网络传送),路由器收到后继续执行⑤

分用:⑦~⑩

  ⑦目的主机收到比特流以后转化为以太网帧,去掉以太网首部和尾部,发送给网络层的IP;(数据链路层)

  ⑧IP检查IP数据报,发现目的IP地址就是本机IP地址,去掉IP首部后根据`协议域`发送给传输层的TCP;(网络层)

  ⑨传输层根据目的端口号将去掉TCP首部后的数据发送至指定的应用程序;(传输层)

  ⑩应用程序接收数据;(应用层)

至此,就完成了一次完整的数据传输~~

TCP/IP-入门的更多相关文章

  1. TCP/IP入门(4) --应用层

    /** 本篇博客由汗青ZJF整理并发布, 转载请注明出处: http://blog.csdn.net/zjf280441589/article/category/1854365 */ TCP/IP中的 ...

  2. TCP/IP入门(2) --网络层

    /** 本篇博客由 126(127不可用) 2^24 -2 B 2^14 -1 128.1 191.255 2^16 -2 C 2^21 -1 192.0.1 223.255.255 2^8 -2 D ...

  3. TCP/IP入门(1) --链路层

    /** 本博客由汗青ZJF整理并发布, 转载请注明出处: http://blog.csdn.net/zjf280441589/article/category/1854365 */ TCP/IP体系结 ...

  4. 《TCP/IP入门经典》摘录--Part 3

    TCP/IP协议系统 3.子网划分和CIDR 子网 划分网络 为什么需要划分子网? 子网划分就是在网络 ID 之下提供了第 2 层逻辑组织.路由器能够把数据报发送给网络里的某个子网地址(一般对应于一个 ...

  5. 《TCP/IP入门经典》摘录--Part 2

    TCP/IP协议系统 1.网络访问层 网卡(network adapter),即网络接口板,又称网络适配器或NIC (网络接口控制器),是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,由 ...

  6. 《TCP/IP入门经典》摘录--Part 1

    TCP/IP基础知识 什么是TCP/IP Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议, ...

  7. TCP/IP入门(3) --传输层

    原文:http://blog.csdn.net/zjf280441589/article/category/1854365 传输层的主要功能 1)传输层为应用进程之间提供端到端的逻辑通信(网络层是为主 ...

  8. TCP/IP入门学习(2)---OSI分层

    一.会话层以上的处理 1.表示层 将数据从主机特有的格式转换为网络标准传输格式.以此使得不同环境之间的通信成为可能. 2.会话层 即决定使用哪个连接或者哪种连接方式将数据发送出去.会话层也会在数首部添 ...

  9. TCP/IP入门学习(1)---分层概述

    本文旨在记述一些学习中的笔记 OSI分层:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 详细点: 1.应用层:为应用程序提供服务并规定程序中通信相关细节. 2.表示层:将应用处理的信息转 ...

  10. TCP/IP、Http、Socket、XMPP-从入门到深入

    TCP/IP.Http.Socket.XMPP-从入门到深入 终极iOS程序猿 2016-12-29 18:27 为了便于大家理解和记忆,我们先对这几个概念进行的介绍,然后分析他们的不同,再进行详细的 ...

随机推荐

  1. MPI Maelstrom(Dijkstra)

    http://poj.org/problem?id=1502 刷一道模板题稳定一下心情... Dijkstra求单源最短路,就是输入的时候注意下,是按下三角输入的(无向图),输入字符x表示i与j不通. ...

  2. 杂题 UVAoj 10000 Longest Paths

      Longest Paths  It is a well known fact that some people do not have their social abilities complet ...

  3. 动态规划——K背包问题

    Problem DescriptionNow you are asked to measure a dose of medicine with a balance and a number of we ...

  4. [Locked] Paint Fence

    Paint Fence There is a fence with n posts, each post can be painted with one of the k colors. You ha ...

  5. 《A First Course in Mathematical Modeling》-chaper1-差分方程建模

    从今天开始笔者将通过这个专栏可是对“数学建模”的学习.其实对于“数学建模”自身的内涵或者意义并不需要太多的阐释,下图简洁明了的阐释了数学建模的意义. 其实数学建模本身可以看成换一种角度去解读数学,将我 ...

  6. 《JavaScript语言精髓与编程实践》读书笔记一

    受到狗哥书单的影响,看到了豆瓣上的评论,买了这本书,然后囫囵吞枣似地用一个月的时间看完了.回头想想自己做的js项目,感觉都羞愧-什么东西都是拿来尝试了一下就用了,其实有很多写得超级丑的地方,看完这个让 ...

  7. 阿里IPO弃港赴美?

    最近,关于阿里巴巴和香港联交所博弈的新闻一直长时间占据了各大科技媒体的头条.9月25日,香港联交所行政总裁在港交所其个人专栏“小加网志”中贴出一则名为<投资者保障杂谈>的博客文章,谈及“香 ...

  8. XQuery FLWOR 表达式

    FLWOR 是 "For, Let, Where, Order by, Return" 的只取首字母缩写.for 语句把 bookstore 元素下的所有 book 元素提取到名为 ...

  9. RabbitMQ-优先级(priority)队列/消息

    就像在日常生活中,事情有轻重缓急一样.我们对于需要处理的消息也有这样的需求. 例如重要的消息我要尽快的得到处理,当然我们可以给重要的消息开个“VIP通道”,但是VIP数量很多,并且VIP也分层次呢? ...

  10. Oracle sequence排序的使用

    最近公司的项目中好多用到了Seq排序的,所以网上找些记录一下吧. 通过以下直接查询出所有的seq列表: select * from user_sequences; 查询结果如下: 查询结果和创建的基本 ...