首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
网络基础
时间:
2015-10-26 17:02:52
阅读:
152
评论:
0
收藏:
0
[点我收藏+]
标签:
理解TCP基础
TCP/IP事实上是一些协议(protocols)的
合集
。
Internet是在一些共享的线路上发送数据的。例如:计算机上同时运行着很多的应用,但是只需要单一的Modem或DSL线路来连接互联网。
为了实现共享,TCP是通过把要发送的数据流分解成很多小信息包在Internet上传输的,这些信息包到了接收者的地方会再次重新合成在一起。通过分解成小的信息包,Internet连接就会用很少的时间来发送数据的每一个比特(bit),其他程序的信息包也可以同时发送。
寻址
为了实现信息包计划,TCP必须要考虑一些细节问题。首先,TCP要能识别远程的机器。基于TCP/IP的网络,每台机器都有唯一的IP地址,这个IP地址看上去类似192.168.1.1。只要知道接收机器的
IP地址
,信息就可以传送过去。但是还有一个问题,如果一个机器上有多个程序通信,就需要知道那个程序接收传来的数据,这就用到了
端口
。每个程序使用唯一的端口号。有的端口事先就知道的,有的是随机指定的。
可靠性
TCP是一个可靠的协议,这个可靠性通过以下几个规则来实现的。
为了防止数据在传输过程中被损坏,每个信息包都包含一个
校验码
。这个校验码就是一个用来保证信息包在传输过程中没有被更改的代码。
当信息包到达目的地的时候,接收方会对比校验码和收到的信息中的数据。如果检验码不对,该信息包将被省略。
为了防止信息包丢失,
TCP会要求接收方每收到一个信息包都反馈一下
。如果接收方没有提供反馈,发送方会自动重发一次。这个是系统自动处理的。TCP会一直试着发送信息包,一直到接收者收到为止,或者它会判断网络连接断了,并在程序中返回一个错误提示。
为了防止信息包重复或者顺序错误,TCP每传送一个信息包都会传送一个
序号
。
接收方会检查这个序号
,确保收到该信息包,并把全部信息包按顺序重新合并。同时,如果接收方看到了一个已经看过的序号,则该信息包会被丢弃。
路由
路由就是在Internet上负责接收信息包并决定如何把他们传输到目的地的设备,可以用traceroute和mtr命令查看信息包在Internet上传输时经过了那些路由器。
安全
由于信息包在Internet上传输的时候,是通过共享的网络传输的,所以任何有权使用网络的人都能看到它们。这些信息还可能被插入或改写。
为了解决这个问题,最流行的方法是SecureSocketsLayer(SSL)和TransportLayerSecurity(TLS)。SSL一般是在TCP连接之上的,与程序代码混合在一层。它提供服务器的认证(让你知道正在和谁通话)、加密(别人不能看到你的信息)和数据完整性(在没有察觉的情况下,传输中的信息包没人能够修改)。TLS的原理和SSL非常类似,只包含在协议堆栈(protocol stack)中。
使用客户/服务器模式
TCP/IP对客户/服务器类型的通信很有帮助。此结构下,
服务器一直在监听来自客户端的请求
,有请求后,就建立连接来处理他们。
此模式中服务器一般都监听一个大家都知道的端口号80端口,一般在linux或unix系统上,只有管理员才能请求访问一个小于1024的端口。
而客户端一般都是随机分配的端口号。端口号最大为65535。
理解UDP
UDP,它被用来从一个系统向其他的系统传送一个非常短的消息。它只提供一个保证:
那就是你收到的数据是完整的
。它既不能保证数据是否真的能被收到,也不能保证数据是不是只接收一次,还不能保证收到的信息次序是否和发送时候一致。但是只要没有受到攻击者绕过安全措施后的攻击,通过UDP接收的数据通常都会是完整的。
UDP的优点是,因为它不提供上面那些保证,所以要比TCP低级,TCP建立和关闭连接要话费时间,而UDP对连接没有什么概念,所以不存在花时间建立和关闭连接的问题。
UDP应用最广泛的是DNS系统,还有流式的音频和视频应用软件。
UDP的限制是一个信息包不超过64KB的数据,通常只用UDP传送1KB一下的数据。
理解物理传输和以太网
TCP/IP有一个优点,就是可以在不同的物理网络硬件之间传送数据。比较常见的有:以太网、端对端等。
以上这些不同的网络连接都有自己独到的特点,同时还具有共同的特点,例如:端对端连接,通常被用来连接两个单独的机器,而且以太网,主要用于连接一个地点的多个机器。
一个通过TCP/IP连接以太网的计算机有一个和该网络接口相关的IP地址。
它与一个本网络的机器通信时,只要向该机器发送信息就可以
。如果要和网外的、在Internet上的其他机器通信,就必须把信息先发送到一个本地网络上的
路由器
,然后由路由器觉得信息包该发向那里。
如何知道那些机器是本地的?
网络软件会检查源计算机和目的计算机的IP地址的
头几位(最有效的部分)是不是相同
。每个网络接口上的
网络掩码
表明需要比较几位。如果比较结果是开始的几位不同的,那么信息包必须要经过路由器。
网络基础
标签:
原文地址:http://www.cnblogs.com/Puzzle/p/4911567.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!