传输层之TCP
---恢复内容开始---
坞无尘水槛清,相思迢递隔重城。
秋阴不散霜飞晚,留得枯荷听雨声。 --李商隐
上一篇中我们了解了socket编程是基于TCP或者UDP,所以我们有必要对TCP,和UDP先进行学习。本篇主要学TCP.
1.TCP属于那一层?
传输层
2.TCP的定义
TCP是 可靠的(如何可靠), 面向连接(三次握手和四次释放) 字节流(每个TCP报文都带着若干个字节) 服务;
a.先说面向连接
(1)三次握手和四次握手(看图说清楚)
http://blog.csdn.net/fw0124/article/details/7452695
(2)连接3次,释放4次。
为什么连接不是4次? ack和syn 一块发来了。
为什么不是2次?防止过期syn到服务器端。两次就会建立一个不应该存在的连接
3次还有什么漏洞? syn flood,说白了,利用3次握手漏洞,故意不发送最后的ack,这样服务器会有短暂的几分钟的资源浪费,大量的请求,服务器就不能用了。
2msl干啥的? msl最大段生存时间,防止最后的ACK,服务器没收到,所以留下这个时间可以利用tcp的超时重传机制。
b.可靠的
1.分割,我们从应用程序得到的数据会被分割成若干个合适的TCP报文,TCP报文的大小是有上限的(MSS http://support.huawei.com/ecommunity/bbs/10156527.html).
2.分割后,传到IP层加上IP头,成为IP报文,我们知道IP协议是不可靠地,不保证到达顺序,不保证不会出错,不保证不会重复,不保证一定会受到。
3.所以
TCP 可靠体现在: 1.保证报文的有序性,自行组装。 2.使用校验码就行校验。3.重复数据去掉,4,如果到达服务器段,则使用ack,规定时间没到则超时重传。
最后TCP会根据当前的网络的拥塞情况选择一定的流量控制方法。关于流量控制,此处不提了,有空再说。(这也就是TCP与UDP的区别);
c字节流
知道一点足矣,TCP是中的数据段是若干个自己就行。其实从java的socket中看到getInputStream就能感受到了。
传输层之TCP的更多相关文章
- 传输层协议TCP和UDP
本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...
- UNIX网络编程---传输层:TCP、UDP、SCTP(二)
UNIX网络编程----传输层:TCP.UDP.SCTP 一.概述 本章的焦点是传输层:包括TCP.UDP.和SCTP(流控制传输协议).SCTP是一个较新的协议,最初设计用于跨因特网传输电话信令. ...
- 传输层:TCP 协议
传输层:TCP 协议 一.概述 TCP 和 UDP 处在同一层——运输层,但是它们有很多的不同.TCP 是 TCP/IP 系列协议中最复杂的部分,它具有以下特点: (1) TCP 提供 可靠的 数据传 ...
- 数据通讯与网络 第五版第24章 传输层协议-TCP协议部分要点
上一博客记录了UDP协议的关键要点,这部分记录TCP协议的关键要点. 24.3 传输控制协议(TRANSMISSION CONTROL PROTOCOL) TCP(Transmission Contr ...
- 计算机网络 学习笔记-传输层:TCP协议简介
概述: TCP传输前先要建立连接 TCP在传输层 点对点,一条TCP只能连接两个端点 可靠传输.无差错.不丢失.不重复.按顺序 全双工 字节流 TCP报文段 TCP报文段的报头前20字节是固定的,后面 ...
- 传输层:TCP UDP SCTP
总图 虽然协议族被称为“TCP/IP”,但除了TCP和IP这两个主要协议外,还有许多其他成员.图2-1展示了这些协议的概况. 图2-1中同时展示了IPV4和IPV6.从右向左看该图,最右边的5个网络应 ...
- TCP/IP(五)传输层(TCP的三次握手和四次挥手)
前言 这一篇我将介绍的是大家面试经常被会问到的,三次握手四次挥手的过程.以前我听到这个是什么意思呀?听的我一脸蒙逼,但是学习之后就原来就那么回事! 一.运输层概述 1.1.运输层简介 这一层的功能也挺 ...
- 网络通信协议八之(传输层)TCP协议详解
传输层协议 分段是为了提高传输效率,封装是指给每个数据段添加一个编号 端到端的传输是逻辑上的端到端,并不是真正意义上的发送方某层与接收方某层之间的传输 IP协议只是保证数据报文发送到目的地,为主机之间 ...
- 网络传输层之TCP/UDP详解
一.运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层. 运输层的任务就是负责主机中两个进程之间的通信,其数据传输的单 ...
随机推荐
- Chi Square Distance
The chi squared distance d(x,y) is, as you already know, a distance between two histograms x=[x_1,.. ...
- (四)跟我一起玩Linux网络服务:DHCP服务配置之中继代理
继第三部分的DHCP服务器的设置成功,我们来做一个中继代理服务器的配置吧. 我们的虚拟机结构如图: 具体参考: (一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.con ...
- Make Ubuntu 14.04 Fullscreen and virtualbox
sudo apt-get remove libcheese-gtk23 sudo apt-get install xserver-xorg-core sudo apt-get install virt ...
- 在类库或winform项目中打开另一个winform项目的窗体
假设类库或winform项目为A,另一个winform项目为B.那麽在A中添加一个接口,里面有一个Show方法,然后在B中写一个类b继承这个接口,并重写这个方法,具体内容为弹出某个窗体.然后在A中另一 ...
- PHP 读json文件并转php配置文件
<?php$c = file_get_contents('./cities_v2.json');$s = "<?php return " . var_export(js ...
- [转]Vim 复制粘贴探秘
Vim作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情.每当学会了vim的一个新功能,就会很大地提高工作效率.有人使用vim几十年,还没有完全掌握vim的功能,这也说明了vim ...
- Yum安装Memcache
rpm -qa | grep libevent yum install libevent -y rpm -qa | grep memcached yum install memcached ...
- Flume用来收集日志,zeppelin用来展示
Flume:Flume是一个分布式,可依赖的,用于高效率的收集.聚类.移动大量数据的服务.Flume使用基于流数据的简单而且可扩展的架构.由于拥有可调的依赖机制和许多故障恢复机制,Flume是健壮而且 ...
- 7 -- Spring的基本用法 -- 8...
7.8 深入理解容器中的Bean 7.8.1 抽象Bean与子Bean 把多个<bean.../>配置中相同的信息提取出来,集中成配置模版------这个配置模版并不是真正的Bean,因此 ...
- android开发环境重装系统之后的配置
前提: 之前配置好的android开发环境:重装系统:压缩了android目录 配置: 安装java环境 安装; 建立JAVA_HOME变量:JAVAHOME添加到path变量 JAVA_HOME=C ...