计算机刚刚发明出来的时候,两台计算机之间是无法通信的,为了使计算机之间能够进行数据的交流,制定了OSI(Open SystemInterconnection)开放系统互联模型,而TCP/IP(我们所使用的)是在OSI之后发展而来的。

给大家画个OSI的参考模型:
我们可以把主机1和主机2看成是2个独立的网络。计算机之间的访问要经过复杂的层级关系,为什么要分成这么多得层级呢?肯定是为了方便开发,分散工作量,提高效率。
其中,网络层,数据链路层,物理层属于硬件。
物理层:主要制定物理设备的标准(比如:网线接口类型,各种传输介质的传输速率等),主要作用是传输比特流(由1、0转化为电流强弱来进行传输,到达目的地后再转化成1、0,也就是数模与模数转换)。这一层数据叫比特,主要设备:集线器
数据链路层:主要将物理层接收的数据进行MAC地址的封装和解封装。这一层数据叫帧,主要设备:网卡,交换机
网络层:选择合适的网间路由和交换结点,确保数据及时传送,将从下层接到的数据进行IP地址封装和解封装。这一层数据叫数据包,主要设备:路由器。
传输层:定义了一些传输数据的协议和端口,比如:TCP ,UDP协议,主要将下层接收的数据进行分段和传输,到达目的地址后再进行重组,这一层数据叫段。
会话层:通过传输层建立数据传输通路。在系统之间发起会话或者接受会话请求(设备间需要互相识别,交朋友)
表示层:主要进行对接受的数据进行解释、压缩和解压缩等,把计算机能够识别的动向转换成人能够识别的动向(比如图片、音乐、文字)
应用层:主要是终端的应用,(比如浏览器、QQ等)可以理解成在电脑屏幕看到的东西 ——终端应用。

理解了OSI参考模型,接下来看看TCP/IP参考模型和OSI有什么不同的地方:

从上面可以看出,TCP/IP参考模型将应用层、表示层和会话层归结为应用层;数据链路层和物理层归结为主机到网络层。为什么这样分呢?
实际上,我们现实的开发中就包括了应用层、表示层和会话层的工作,因为每个层都需要有“管理者”去管理,这样就加大了沟通成本,而简化后我们就只需要4个“管理者”进行管理,直接减少了沟通成本。
为了加深各位客官的理解,我们举个例子:我们平常上QQ需要发送消息,那发送消息在TCP/IP中的体现就如下图所示:

从图中可以看出,每到一个层级,会自动拼接层级标识,所以数据是不断增大的,而接受则反之。从物理层接受——直到应用层显示。
网络通讯要素
1. IP地址(网络设备唯一标识 )
* 网络中设备的标识
* 不易记忆,可用主机名
* 本地回环地址:127.0.0.1 主机名:localhost
2. 端口号(定位程序)
* 用于标识进程的逻辑地址,不同进程的标识
* 有效端口:0~65535,其中0~1024由系统使用或者保留端口,开发中不要使用1024以下端口
3. 传输协议(用什么样的方式进行交互)
* 通讯规则
* 常见协议:TCP、UDP
1> TCP(传输控制协议)   比如:QQ
* 建立连接,形成传输数据的通道
* 在连接中进行大数据传输(数据大小不受限制)
* 通过三次握手完成连接,可靠协议,安全送达
* 必须建立连接,效率稍低
2> UDP(用户数据报协议)   比如:短信
* 将数据及源和目的封装成数据包中,不需要建立连接
* 每个数据报的大小限制在64K之内
* 因为无需连接,因此不可靠协议
* 不需要建立连接,速度快
4. URL(统一资源定位)   
最基本的网络概念就先讲到这边,以后想到哪里再补充到哪里,如果有错误或者有什么问题可以联系我。
转载请注明出处,谢谢!

【网络编程】TCP/IP、UDP、网络概…的更多相关文章

  1. Socket网络编程(TCP/IP/端口/类)和实例

    Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次 ...

  2. 网络编程TCP/IP详解

    网络编程TCP/IP详解 1. 网络通信 中继器:信号放大器 集线器(hub):是中继器的一种形式,区别在于集线器能够提供多端口服务,多口中继器,每个数据包的发送都是以广播的形式进行的,容易阻塞网络. ...

  3. 网络知识--OSI七层网络与TCP/IP五层网络架构及二层/三层网络

    作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识. 废话不多说!下面就逐一展开对这两个网络架构知识的说明:一.OSI七层网络协议OSI是Open System Int ...

  4. 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络(转)

     reference:https://www.cnblogs.com/kevingrace/p/5909719.html https://www.cnblogs.com/awkflf11/p/9190 ...

  5. python 网络编程 TCP/IP socket UDP

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  6. Socket网络编程TCP、UDP演示样例

    Socket网络编程: 1) OSI(了解): 国际标准化组织ISO(International Orgnization for Standardization)指定了网络通信的模型:开放系统互联(O ...

  7. Python中的socket网络编程(TCP/IP,UDP)讲解

    在网络编程中的一个基本组件就是套接字(socket).套接字基本上是两个端点的程序之间的"信息通道".程序可能分布在不同的计算机上,通过套接字互相发送信息.套接字包括两个:服务器套 ...

  8. 网络编程TCP/IP实现客户端与客户端聊天

    一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议. TCP/I ...

  9. [网络编程] TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结

    TCP.UDP都是属于运输层的协议,提供端到端的进程之间的逻辑通信,而IP协议(网络层)是提供主机间的逻辑通信,应用层规定应用进程在通信时所遵循的协议.一.UDP主要特点:传输的是用户数据报协议.1. ...

  10. UNIX网络编程——TCP/IP简介

    一.ISO/OSI参考模型 OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardi ...

随机推荐

  1. java并发编程(4)--线程池的使用

    转载:http://www.cnblogs.com/dolphin0520/p/3932921.html 一. java中的ThreadPoolExecutor类 java.util.concurre ...

  2. Eclipse窗口总是在最前的解决办法

    Eclipse窗口总是在最前的解决办法 状况: Eclipse在偶然的情况下,会莫名其妙地保持在窗口的最前面,一直保持在最前:然后alt + tab,或者鼠标点击其他窗口.想切换/激活其他窗口时,根本 ...

  3. ADO.NET基础--组成部分

    第一部分:数据提供程序,在命令空间:System.Data.SqlClient下: Connection--连接数据库的通道 Command----命令执行对象 DataReader--数据读取器 D ...

  4. sQLserver T-SQL 事务的用法

    原文在: https://www.lesg.cn/netdaima/2016-55.html 在使用Mssql的时候经常需要用到存储过程 有些操作在前面发生错误的时候:需要回滚:这就需要事务了: 下面 ...

  5. 走进异步世界:EnyimMemcached异步化改造引起的内存泄漏

    6月30日我们发布了异步化改造后的博客程序之后,出现了高内存.高CPU.高线程数的不理想情况. 经过一周的追查,终于水落日出——引起不理想情况的根源是我们修改过的EnyimMemcached代码存在内 ...

  6. js实现移动端手指左右上下滑动翻页效果

    var ele = document.getElementsByClassName("img-box")[0]; var beginX, beginY, endX, endY, s ...

  7. jquery简单原则器(匹配索引大于指定值的元素)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. [教学] 将 Form 内的控件变成 Style 简易运用

    1. 在 Form 上放一个 TImage ,再一个 TText 到 Image 里面,并将 Image1.StyleName 设定为 BtnStyle,如下: 2.接着放一个 TButton,将 S ...

  9. 2016 年沈阳网络赛---QSC and Master(区间DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5900 Problem Description Every school has some legend ...

  10. 一个bug

    bug原因: maven的project重新更新了一下project name,然后在更新过程中,卡死了,就强制退出.结果,就再也进不去eclipse了.看了eclipse的启动日志,各种报错,找不到 ...