计算机刚刚发明出来的时候,两台计算机之间是无法通信的,为了使计算机之间能够进行数据的交流,制定了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. html/css基础篇——html代码编写过程中的几个警惕点

    本文想说的警惕点与浏览器兼容无关,主要是几个本人在项目中遇到的几个小问题的总结,问题虽小,但是却有时很困扰人,在此记录一下,如果后期有此类问题会持续添加到这里. 1.内联标签之间的空格 正常情况下书写 ...

  2. WCF会话(Session)与实例(Instance)管理

    一.理解Session 1.Session的作用:保留Client和Service之间交互的状态,确保Client与Service之间交互唯一性(SessionId),即:多个Client同时访问Se ...

  3. nth-child和蝉原则实现的奇妙随机效果(译)

    此文翻译自charlotte jackson的<Magic randomisation with nth-child and Cicada Principle> 在做伪装的随机模式时将nt ...

  4. 网络基础:NetBIOS

    网络基础小补. 利用 NetBIOS 名称与其他计算机通信 网络中的计算机之间必须知道IP地址后才能相互通信.但对人来说IP难以记忆,NetBIOS计算机名称比较容易记忆.当计算机使用 NetBIOS ...

  5. 记一次ckeditor上传图片到服务器问题

    package com.util;import java.io.IOException; import java.io.PrintWriter; import java.util.List;impor ...

  6. mysql存储过程中的异常处理

    http://www.cnblogs.com/cookiehu/p/4994278.html 定义异常捕获类型及处理方法: DECLARE handler_action HANDLER FOR con ...

  7. TSwitch 中文简繁显示支持(XE6 Android)

    说明: XE6 的 TSwitch 做了很多改进,包含多语显示处理,但 XE6 似乎只认定一种中文语系「zh」,它无法处理「zh_TW」.「zh_CN」.「zh_HK」.「zh_SG」等语系,不过可以 ...

  8. FreeBSD应该装gnome3做桌面

    目前freebsd pkg包管理体系的repo源多了一些,速度快了很多. 仓库中目前的版本为3.14,安装gnome3很简单. pkg install xorg gnome3 echo "e ...

  9. marquee标签滚动效果

    <marquee></marquee>标签,默认从最右侧往左滚动: direction:设置滚动的方向: height:设置标签高度, width:设置标签宽度: behavi ...

  10. No.017:Letter Combinations of a Phone Number

    问题: Given a digit string, return all possible letter combinations that the number could represent.A ...