计算机刚刚发明出来的时候,两台计算机之间是无法通信的,为了使计算机之间能够进行数据的交流,制定了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. 分享本年度最佳的15个 Photoshop 实例教程

    毫无疑问,Photoshop 是任何其类型的设计相关工作的最佳工具.有这么多东西,你可以用它来设计,发挥你的想象力,一切皆有可能. 现在,几乎所有的封面图像都会用 Photoshop 来修饰. 您可能 ...

  2. 简单几步把LOGO变字体

    今天学到一招,所以决定简单写写如何利用图标字体生成器IcoMoon把自己制作的图标变成字体,下面以OSChina的图标为例. 一.确保logo转成纯色,并保存为svg格式 因为OSC的logo是绿色带 ...

  3. C语言学习014:结构化数据类型

    struct的基本使用 #include <stdio.h> //定义数据结构 struct fish{ const char *name; const char *species; in ...

  4. Web API应用架构设计分析(2)

    在上篇随笔<Web API应用架构设计分析(1)>,我对Web API的各种应用架构进行了概括性的分析和设计,Web API 是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端 ...

  5. 微信公众号入门学习2_使用C#,ASP.NET APIController如何被动回复用户消息

    前言: 这里就可以凸显使用APIController的一个优势了,因为可以通过MVC的路由设置相同的路由,但改变请求的方式(HttpPost),可以单独写被动回复接口. 毕竟,微信服务器转入到咱们自己 ...

  6. iOs 自定义UIView 日历的实现 Swift2.1

    学习Swift有一个月了,动手写一个UIView吧. 所有源代码在最后,直接用就可以了,第一次写Swift,和C#,Java还是有区别的 (博客园可以考虑在代码插入中添加Swift的着色了) 1  函 ...

  7. App单个页面的最佳文本框个数是多少个?

    [1].不同大小的手机屏幕,对应的App每页最佳文本框个数,是不同的. [1.1]如果是iPhone4的屏幕尺寸,分辨率为640x960px的时候, 文本框个数最大值为:2个文本框 [计算公式] 第 ...

  8. 【C#进阶系列】20 异常和状态管理

    异常就是指成员没有完成它的名称所宣示的行动. public class Girl { public string Name { get; set; } } public class Troy{ Gir ...

  9. Android发送短信

    // 发送短信 public void sendMsg(){ String content = edtSend.getText().toString(); SmsManager smsManager ...

  10. Light OJ 1031---Easy Game(区间DP)

    题目链接 http://lightoj.com/volume_showproblem.php?problem=1031 Description You are playing a two player ...