前言 tcp的关闭不是简单粗暴的,相对而言是友好优雅的,好聚好散吧. 那么友好的关闭方式是这样的: 假设这里是客户端请求关闭的,服务端倒过来. 客户端:我要请求关闭 服务端:我接收到你的请求了,等我把要发的数据发完. 服务端:我要发的数据发完了,可以关闭了. 客户端:好的,我已经执行清理工作了,关闭结束. 那么这个时候为什么服务端直接告诉客户端可以直接关闭了呢? 为什么服务器端要做一些事情呢,到底有啥用. 回到设计的角度上,理论上是越简单越好的,遇到了什么问题,才使得我们要增加一个步骤呢. 那么…
前言 tcp的包的格式可以看我以前的计算机网络整理,下面这些周边只是为了开发时候我们能用到一些理论知识. 正文 首先要介绍的就是域名,为啥有域名这东西呢?单纯站在网络的角度上讲这属于应用层的东西了. 如果站在万物互联的角度上讲,把互联网看做是一台大型电脑的话,那么域名就相当于句柄了. 句柄这东西解释一下,句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体.文件等,值得注意的是句柄不能是常量. Windows之所以要设立句柄,根本上源于内存管理机制的问题,即虚拟地址.简而言…
前言 前文我们介绍了网络协议的各层,同时也介绍了一下我们在编写代码时候的服务端的accept.bind.listen.connect.send做了什么. 可以说是从宏观的角度,或者代码开发的角度来说的,在此我觉得还不够具体. 同样我想解释一下为什么我说服务端listen之后,客户端已经可以进行tcp连接了,同样可以发送消息了. 正文 首先我们的tcp连接网图: 前提,这个时候服务端只是listen了,并没有accept.且客户端调用了connect,同时send 了hello word了. 第一…
前言 本文介绍一些tcp的例子,然后不断完善一下. 正文 服务端: // See https://aka.ms/new-console-template for more information using System.Net; using System.Net.Sockets; var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); var ipAddress = IP…
前言 本文不会去介绍tcp的具体协议,因为这个tcp 应该不能说是单纯的连接和传输数据这么简单,里面还有很多机制. 正文 首先介绍一下什么是协议族(protocal Family),举个例子PF_INET 为ipv4 协议族了. 为什么有一个族的概念呢?因为吧,ipv4 有很多协议,地址解析协议ARP(Address Resolution Protocol).逆地址解析协议RARP(Reverse Address Resolution Protocol).互联网控制报文协议ICMP(Intern…
前言 简单编写一下tcp例子. 正文 我们常说IOS有7层,实际上也只有4层,或者这样说简单的说是4层. 首先是数据链路层,首先这一层解决了什么问题呢?为什么要有这一层呢? 首先要抛开有操作系统的意识,因为它为我们做了太多东西了,摆在你面前的只有两个终端和一根网线. 数据链路层定义了在单个链路上如何传输数据.这些协议与被讨论的各种介质有关.示例:ATM,FDDI等.数据链路层必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧,帧是数据链路层的传送单位:如何控…
前言 简单的说,UDP 没有 TCP 用的广泛,但是还有很多是基于UDP的程序的,故而简单介绍一下. 正文 秉承节约脑容量的问题,只做简单的介绍和例子,因为自己几乎也没怎么用过UDP. 只是了解和知晓其中的用途,那么设计方案的时候有特定的场景,那么可以参考. UDP 和 TCP 最大的不同的地方是传输方式,不然他们也不会在传输层进行分叉. UDP 不知道对方是否存在,那么会直接发送信息出去,对方也不会告诉你是否收到了,是否需要重传. 有些人把TCP 比作是接打电话,那么UDP就像是投递邮件了.…
前言 以前也整理过吧,写了几篇之后,感觉没啥整理的必要了然后就放弃了,最近又想整理一下. 正文 这篇对应的是:https://www.cnblogs.com/aoximin/p/12235333.html,可以说是这篇的重写吧. 首先介绍一下什么是socket的,如果搞学术的不知道,他们可能要求的比较严,但是对于码农来说,socket可以说是向操作系统申请网络资源. 这个资源可以让我们发送数据和接收数据,这样就可以了.就像我们上面那篇文章写的,操作系统就是服务端,我们写的都是客户端,我们做的就是…
计算机网络基础之TCP/IP 协议栈 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP/IP 协议栈概述 1>.什么是TCP/IP协议栈 Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议 TCP/IP是一个Protocol Stack,包括TCP.IP.UDP.ICMP.RIP.TELNET.FTP.SMTP.ARP等许多协议 最早发源于美国国防部(缩写为DoD)的因特网的前身ARPA网项目,…
由于涉及面太广,只作简单整理,有兴趣的可参考<UNIX Networking Programming>volum 1, Section 5.7, 5.12, 5.14, 5.15, 6.6 以及7.5 SO_LINGER选项. 以一个简单的echo服务器为例,客户端从标准输入读入字符,发送给服务器,服务器收到后再原样返回,客户端收到后打印到标准输出. 那么,关于套接字的关闭有以下几种情形: 1,客户端关闭连接: 1.1,客户端调用close() 1.2,客户端进程关闭 1.3,客户端调用shu…