图解 | 原来这就是TCP】的更多相关文章

你是一台电脑,你的名字叫 A 经过<图解 | 原来这就是网络>这篇文章中的一番折腾,只要你知道另一位伙伴 B 的 IP 地址,且你们之间的网络是通的,无论多远,你都可以将一个数据包发送给你的伙伴 B 这就是物理层.数据链路层.网络层这三层所做的事情.站在第四层的你,就可以不要脸地利用下三层所做的铺垫,随心所欲地发送数据,而不必担心找不到对方了. 虽然你此时还什么都没干,但你还是给自己这一层起了个响亮的名字,叫做传输层.你本以为自己所在的第四层万事大吉,啥事没有,但很快问题就接踵而至. 问题来了…
入门 用户发了一个HTTP的请求,想要访问我们网站的首页,这个HTTP请求被放在一个TCP报文中,再被放到一个IP数据报中,最终的目的地就是我们的115.39.19.22. 进阶 IP数据报其实是通过数据链路层发过来的,使用ARP协议,把一个IP地址(115.39.19.22)给广播出去,然后具有此IP机器就会回复自己的MAC地址. 图解 图片来源"码农翻身"公众号…
为了讲多路复用,当然还是要跟风,采用鞭尸的思路,先讲讲传统的网络 IO 的弊端,用拉踩的方式捧起多路复用 IO 的优势. 为了方便理解,以下所有代码都是伪代码,知道其表达的意思即可. Let's go 阻塞 IO 服务端为了处理客户端的连接和请求的数据,写了如下代码. listenfd = socket();   // 打开一个网络通信端口 bind(listenfd);        // 绑定 listen(listenfd);      // 监听 while(1) {   connfd …
我是一个 .java 文件,名叫 FlashObject.java,叫我小渣就行. public class FlashObject {    private String name;    private int age;        public String getName() {        return name;    }    public int add(int a, int b) {        return a + b;    }} 我马上就要被 JVM 虚拟机老大加载…
Socket编程通信图解原理: TCP协议通信图解…
转载:http://www.cnblogs.com/visily/archive/2013/03/15/2961190.html, 作者:望梅止渴 相关: HTTP协议详解  深入理解HTTP协议 TCP协议可靠性数据传输实现原理分析   关于TCP的问题总结 1.传输层存在的必要性 由于网络层的分组传输是不可靠的,无法了解数据到达终点的时间,无法了解数据未达终点的状态.因此有必要增强网络层提供服务的服务质量. 2.引入传输层的原因 面向连接的传输服务与面向连接的网络服务类似,都分为建立连接.数…
如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Internet Protocol )协议头部的格式,是理解其它内容的基础,就关键字段做一些说明 Source Port和Destination Port:分别占用16位,表示源端口号和目的端口号:用于区别主机中的不同进程,而IP地址是用来区分不同的主机的,源端口号和目的端口号配合上IP首部中的源IP地址和目的IP地址就能…
参考:https://www.cnblogs.com/HPAHPA/p/7737641.html TCP.UDP详解 1.传输层存在的必要性 由于网络层的分组传输是不可靠的,无法了解数据到达终点的时间,无法了解数据未达终点的状态.因此有必要增强网络层提供服务的服务质量. 2.引入传输层的原因 面向连接的传输服务与面向连接的网络服务类似,都分为建立连接.数据传输.释放连接三个阶段:编址.寻址.流控制也是类似的.无连接的传输服务与无连接的网络服务也非常类似.一个很显然的问题:既然传输层的服务与网络层…
TCP是个"流"协议,所谓流,就是没有界限的一串数据.大家可以想象河里的流水,他们是连成一片的,其间并没有分界线.TCP底层并不了解上层业务数据的具体含义,他会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送.这就是TCP所谓的拆包和粘包的问题. 一.TCP粘包/拆包问题说明 我们可以通过图解对TCP粘包和拆包问题进行说明,粘包问题如图. 假设客户端分别发送了两个数据包D1和D2给服务…
1.HTTP请求的过程 世界上几乎所有的HTTP通信都是由TCP/IP承载的,当发生HTTP请求时,实际上经过了以下几个步骤: ①浏览器从请求的URL中解析主机名 ②浏览器查询这个主机名的IP地址 ③浏览器获得端口号 ④浏览器发起到IP:端口的连接(TCP连接) ⑤浏览器向服务器发送一条请求报文 ⑥浏览器从服务器读取响应报文 ⑦浏览器关闭连接(TCP连接) 图解: 2.TCP性能聚焦点 2.1TCP连接的握手时延 建立TCP连接甚至是发送任意数据之前,TCP软件之间都会交换一系列的IP分组,对连…
TCP.UDP详解 1.传输层存在的必要性 由于网络层的分组传输是不可靠的,无法了解数据到达终点的时间,无法了解数据未达终点的状态.因此有必要增强网络层提供服务的服务质量. 2.引入传输层的原因 面向连接的传输服务与面向连接的网络服务类似,都分为建立连接.数据传输.释放连接三个阶段:编址.寻址.流控制也是类似的.无连接的传输服务与无连接的网络服务也非常类似.一个很显然的问题:既然传输层的服务与网络层的服务如此相似,那么为什么我们还要两个独立的层呢? 原因在于:传输层的代码完全运行在用户的机器上,…
1.TCP协议传输过程 TCP协议是面向流的协议,是流式的,没有业务上的分段,只会根据当前套接字缓冲区的情况进行拆包或者粘包: 发送端的字节流都会先传入缓冲区,再通过网络传入到接收端的缓冲区中,最终由接收端获取. 2.TCP粘包和拆包概念 因为TCP会根据缓冲区的实际情况进行包的划分,在业务上认为,有的包被拆分成多个包进行发送,也可能多个晓小的包封装成一个大的包发送,这就是TCP的粘包或者拆包. 3.TCP粘包和拆包图解 假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到字节…
作者:小林coding 图解计算机基础网站:https://xiaolincoding.com 大家好,我是小林. 忽然思考一个问题,TCP 通过序列号.确认应答.超时重传.流量控制.拥塞控制等方式实现了可靠传输,看起来它很完美,事实真的是这样吗?TCP 就没什么缺陷吗? 所以,今天就跟大家聊聊,TCP 协议有哪些缺陷?主要有四个方面: 升级 TCP 的工作很困难: TCP 建立连接的延迟: TCP 存在队头阻塞问题: 网络迁移需要重新建立 TCP 连接: 接下来,针对这四个方面详细说一下. 升…
TCP/IP.Http.Socket.XMPP-从入门到深入 终极iOS程序猿 2016-12-29 18:27 为了便于大家理解和记忆,我们先对这几个概念进行的介绍,然后分析他们的不同,再进行详细的分析. 一.TCP/IP简介 IP协议是网络层,TCP协议是传输层,HTTP协议是应用层,socket是对TCP/IP协议的代码封装和应用. TPC/IP 主要解决数据如何在网络中传输,HTTP主要解决如何包装数据. TCP/IP协议用来传输数据,应用层协议 使传输的数据有意义,应用层协议有很多,比…
SO_RCVBUF SO_SNDBUF TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,不管进程是否读取socket,对端发来的数据都会经由内核接收并且缓存到socket的内核接收缓冲区之中. read所做的工作,就是把内核缓冲区中的数据拷贝到应用层用户的buffer里面,仅此而已. send所做的工作,最简单情况(也是一般情况),将数据拷贝进入socket的内核发送缓冲区之中,然后send便会在上层返回. send返回之时,数据不一定会发送到对端,send仅仅是把应用层buff…
TCP Transmission Control Protocol,传输控制协议,传输层通信协议. 采用“带重传的肯定确认”(Positive Acknowledge with Retransmission)技术实现数据传输服务的可靠性. 超时重传:如果发送端实体在合理的往返时延(RTT)内未收到ACK确认,则假定数据包已丢失并重传: TCP用一个校验和函数来检验数据是否有错误,在发送和接收时均要计算校验和: MD5认证对数据进行加密: TCP采用滑动窗口机制提高网络吞吐量.同时解决端到端的流量…
TCP包结构 一个TCP包结构如下: 一个TCP包主要由TCP包头和数据部分组成,包头固定部分为20字节,选项和数据部分根据实际情况设置为4N(N可以为0)字节. 1.16bit源端口和目的端口号,它可以确认数据的传输方向(暂不考虑更底层的包) 2.32bit序号,它是为TCP包中数据部分进行编号的部分.假设要发送的数据有100M,由于受MSS( Maximum Segment Size 最大报文段长度)限制,一个TCP包是不可能传输完这100M的数据,于是需要将数据拆分,为了确保拆分传输后的数…
TCP是一个十分复杂的协议,通过前面几篇文章只涉及了TCP协议中一些基本的概念. 虽然说都是一些TCP最基本的概念,但是试验过程中一直在踩坑,例如:TCP flag设置错误,seq.ack号没有计算正确,TCP状态变迁错误等等. 通过Pcap.Net真正实验一下才发现了很多TCP协议中要注意的细节,例如:Ack.Seq号的计算,EthernetLayer.IpV4Layer .TcpLayer的层层包装,不同TCP flags的含义等等. TCP中还有很多重要的内容,先做个记录,后面再深入了解.…
本系列文章全部摘选自"码农翻身"公众号,仅供个人学习和分享之用.文章会给出原文的链接地址,希望不会涉及到版权问题. 个人感言:真正的知识是深入浅出的,码农翻身" 公共号将苦涩难懂的计算机知识,用形象有趣的生活中实例呈现给我们,让我们更好地理解. 本文源地址:TCP/IP之大明邮差 大明王朝天启四年,清晨. 天色刚蒙蒙亮,我就赶着装满货物的马车来到了南城门,这里是集中处理货物的地方, 一队一队的马车都来到这里,城头的士兵带着头盔.身披盔甲.手持长枪,虎视眈眈的注视这下面的动静.…
今天在论坛看到一牛人对tcp和udp的解释和区分,突然间恍然大悟. 以下全为拷贝. 在现实生活中,“要想富,先修路”:同时人总要“居有定所”,于是盖起了N多的房子.但是当你和同事商量好去做客的时候却发现,兜了半天就是找不到他家的房子.原因是路上没有指示牌,且所有的房子都没有门牌号码.所以你一怒之下,将有关部门举报了.几天过后门牌号码都钉在了房子的显著位置上.于是你再次和同事约定,按照朋友给的地址,顺利找到他家.可是,当你到了他家门口又遇到问题了:他家的房子非常的大,所以四处都装了门,有N个,你不…
一位大神的精华之作,原创2016-05-12 刘欣 来自码农翻身! 时间: 大明王朝天启四年, 清晨. 天色刚蒙蒙亮,我就赶着装满货物的马车来到了南城门,这里是集中处理货物的地方,一队一队的马车都来到这里, 城头的士兵带着头盔,身披盔甲,手持长枪,虎视眈眈的注视这下面的动静. 地点:城门口的大棚里乱哄哄的,是一群人围在一起赌钱, 这些家伙都穿着同样的衣服, 前胸和后背写着三个大字 “TCP邮差”. 我知道这就是我要找的人, 他们会帮我把货物发出去. 我下了车,在大棚里四处查看, 找到一个无聊的坐…
TCP与UDP的不同接包处理方式 1.UDP发包的问题问:udp 发送两次数据,第一次 100字节 ,第二次200字节, 接包方一次recvfrom( 1000 ), 收到是 100,还是200,还是300?答:UDP 是数据报文协议,是以数据包方式,所以每次可以接收100,200,在理想情况下,第一次是无论recvfrom多少都是接收到100.当然,可能由于网 络原因,第二个包先到的话,有可能是200了.对可能会由于网络原因乱序,所以可能先收到200,所以自定义的udp协议包头里都要加上一个序…
转载:http://blog.csdn.net/wanghaobo920/article/details/11877589 面向报文(UDP)和面向字节流(TCP)的区别 面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文.因此,应用程序必须选择合适大小的报文.若报文太长,则IP层需要分片,降低效率.若太短,会是IP太小.UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界.这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一…
用了近二十天的时间,把一本800页的书看完,感觉收获还是很大的.对网络,对这些协议有了深刻的认识! 知道了路由器与交换机的区别. 知道了IP地址的特点. 知道了网络的分层,物理层,数据链路层,网络层,传输层,应用层. 知道了各个层的协议. 知道了数据传输的特点,比特,帧,数据报,报文段,报文. 知道了文件传输协议FTP. 知道了远程连接SSH. 知道了UDP协议是一种非面向连接的协议. 知道了报文的格式. 知道了TCP/IP协议是很多协议的组合. 知道了协议也是程序. 知道了很多很多.开始时读的…
http://www.cnblogs.com/digdeep/p/4869010.html 1. TCP/IP模型 我们一般知道OSI的网络参考模型是分为7层:“应表会传网数物”——应用层,表示层,会话层,传输层,网络层,数据链路层,物理层.而实际的Linux网络层协议是参照了OSI标准,但是它实现为4层:应用层,传输层,网络层,网络接口层.OSI的多层对应到了实际实现中的一层.我们最为关注的是传输层和网络层.一般而言网络层也就是IP层,负责IP路由寻址等等细节,而传输层TCP/UDP负责数据的…
TCP/IP协议详解卷1--第一章概述--读书笔记 作者:vpoet 日期:2015/06/25 注:本系列的文章只是作者对TCP/IP协议的理解,难免会出现纰漏或者不完整,当然也有可能很肤浅,希望大家理解 一.引言 百度百科这样说TCP/IP协议: Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名 网络通讯协议,是Internet最基本的协议.Internet国际互联网络的基础,由网络层的IP协议和…
章相当低级,但相当重要! 我们周围一切差点儿都依赖于把事情抽象成低等级,并在某一点把它详细化,在一些设计概念中.接口层十分清晰而且目标非常集中,应用程序不用考虑操作系统怎样工作,操作系统也不用考虑硬件怎样工作,OSI模型的第4层不须要考虑第三层怎样工作.所以我们仅仅须要集中精力在某一层,就当以下的层正常工作,但这样能行吗?假设你写一个应用,你最好知道OS是怎么样工作的.而且要考虑数据库怎样存储字符的,相同.一个好的操作系统必须要了解硬件是怎样工作的.假设你觉得TCP不须要考虑IP的实现那就搞错了…
延迟 定义和标准延迟 延迟简单地说,它是一种转移或信息包从起点到终点,所花费的时间. 延迟=发送延迟+传播延迟+处理延迟+排队延迟: Propagation delay 传播时延 传播时延这个概念.是指电磁信号或者光信号在传输介质中传输的时延.而在光纤或者铜线中.光信号和电磁信号的传播速度都在20万公里/秒以上,在传输介质中传输的是电磁信号或者光信号,而不是数据! Transmission delay 传送时延 发送时延是指结点在发送数据时使数据块从结点进入到传输媒体所需的时间,也就是从数据块的…
通过练习掌握TCP在进行传输过程中的问题 练习1:创建一个英文大写转换server client输入字母数据,发送给服务端,服务端收到后显示到控制台,并将该数据转成大写返回client,知道client输入over,转换结束 public class Main { public static void main(String[] args) throws IOException{ Text_Transform_Client(); Text_Transform_Server(); } public…
TCP协议详解 一.TCP协议 1.TCP 通过以下方式提供可靠性: ·  ◆ 应用程序分割为TCP认为最合适发送的数据块.由TCP传递给IP的信息单位叫做报文段. ·  ◆ 当TCP发出一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段.如果不能记时收到一个确认,它 就重发这个报文段. ·  ◆ 当TCP收到发自TCP连接另一端的数据,它将发送一个确认.这个确认不是立即发送,通常延迟几分之一秒. ·  ◆ TCP将保持它首部和数据的检验和.这是一个端到端的检验和,目的是检测数据在传输…