网络
Hanani_Jia
这个作者很懒,什么都没留下…
展开
-
HTTP报头
我们上次在说HTTP版本区别的时候说了,在HTTP1.0的时候加入了报头,报头中包含了很多信息。报头分为两种:一种是请求报头一种是响应报头,自然就是一个是请求的时候发送的一个是响应的时候发送的。 请求报头由四部分构成请求行、请求头、空格和请求数据 这里我们看当你访问百度的时候的请求报头GET / HTTP/1.1 Host: www.baidu.com Conne...原创 2018-10-11 21:01:25 · 8090 阅读 · 0 评论 -
自定协议实现网络计算器
这里我们的自定执行协议和TCP、UDP、IP这些协议不同,我们自定制的协议是应用层的协议。是我们这两个应用所应用的一种特殊传输和接受数据的方式,这里我们是通过结构体来存储数据的,也可以定义一个字符串,当我们的数据发送过去之后,只有我对应的服务端或者客户端明白我这里是在干什么,如何把这一大块数据进行划分。//这是一个通过自定制协议来实现的网络计算器//客户端传输过来的数据是提前协定好的...原创 2018-10-29 16:34:06 · 476 阅读 · 0 评论 -
UDP协议实现聊天小程序
今天我们用之前讲解过的UDP协议来写一个最基础,最简单的网络聊天程序。//我们通过udp协议来实现一个简单的网络聊天程序//这是客户端的实现//过程:// 1.创建套接字// 2.绑定地址信息// 3.向服务端发送数据// 4.接受服务端发送的数据// 5.关闭socket#include<stdio.h>#include&l...原创 2018-10-24 16:25:51 · 1716 阅读 · 0 评论 -
TCP实现简单聊天程序
上次我们通过UDP来实现了简单的聊天程序,这次我们用TCP协议来实现,TCP和UDP不同的是TCP需要创建连接。//这是一个通过TCP协议来实现聊天的程序//1.创建socket//2.为socket绑定地址//3.向服务端发送链接请求//4.发送数据//5.接受数据//6.断开连接//#include<stdio.h>#include<stdlib...原创 2018-10-27 19:52:43 · 1759 阅读 · 0 评论 -
简单HTTP服务器实现
我们这里实现一个简单的HTTP服务器,无论浏览器向我们请求什么数据,我们都返回一个hello world //实现最简单的http服务端程序//返回hello world//http是应用协议,在传输层使用的是tcp协议所以我们的程序本质上是tcp服务器//我们http指定监听10000端口,所以在请求访问的时候也要手动指定否则默认80端口#include<std...原创 2018-10-30 20:46:03 · 2118 阅读 · 0 评论 -
端口
学习网络的一定都知道端口这个东西,但是端口到底是什么?他的作用是什么在什么时候使用到它,今天就简单的介绍一下。 首先,要清楚哪里用到了端口在TCP/IP协议中我们经常能够看到端口的身影,在网络中分层传输的时候,每经过一层都会给他加上一个首部,TCP、IP都是如此,虽然我们常常是把TCP和IP在一起说,但是TCP、IP两个协议是属于不同网络层的,TCP位于传输层,传输层的任务是确保数据能够...原创 2018-11-10 16:46:22 · 509 阅读 · 0 评论 -
TCP协议特性--可靠
我们之前简单的讲解了一下TCP的工作方式以及TCP和UDP之间的区别,今天我们再深入的讲一下TCP。 TCP是传输层的协议,在到达这一层的时候TCP会给数据加上一个TCP的首部,TCP首部大小最小为20字节,最长是60字节。并且在TCP首部中没有表示包长度的数据或者数据长度的字段,一般来说都是在IP层获知TCP的包长,然后由TCP包长来计算出当前传输的数据长度。 最开始16位...原创 2018-11-10 20:16:27 · 289 阅读 · 0 评论 -
TCP--四次挥手
上次我们介绍了TCP链接的三次握手,这次我们来说一下TCP的四次挥手。 三次握手是在创建连接,那顾名思义四次挥手就是在断开连接的。 当我们两个主机想要断开连接的时候就通过四次通信来断开一个存在的TCP链接。那为什么需要四次挥手来断开连接呢?我们先说一下四次挥手的过程。第一次挥手:主动关闭的一方向A向被动的一方B发送断开请求,在发送数据包的时候把TCP首部的FIN设置为1,...原创 2018-11-13 21:10:22 · 266 阅读 · 0 评论 -
TCP--三次握手
我们再说TCP的时候经常会说他是有连接的,可靠的,面向数据流的三个特点,今天我们就来介绍一下TCP的有连接的。 先说一下什么是面向连接的,我们在创建TCP连接的时候和UDP不一样,我们得先向客户端发送请求,然后客户端回复我们一个确认应答和请求,之后我们再给客户端发送确认应答,也就是经典的三次握手,这时候双方才可以发送数据,UDP不管你有没有连接,上来就直接发,这就好比我们TCP用的是手机...原创 2018-11-11 20:56:55 · 339 阅读 · 0 评论 -
TCP协议机制
今天主要给大家介绍几个在TCP协议中的机制。 在之前介绍对TCP可靠性的时候说到了几个机制:确认应答、超时重传。 确认应答机制是每一个数据包中都带有一个对应的确认序列号,是用来告诉发送者,我收到了哪些数据,接下来你还要给我发哪些数据。第二个超时重传,也就是当我们的发送方发送数据之后长时间没有接收到确认应答他就认为这个数据包可能是自己没有发送到,所以他便会再次重新发送这个数据包...原创 2018-11-18 21:42:57 · 979 阅读 · 0 评论 -
IP协议 二
上次我们介绍了每个IP地址在网络里边必须是唯一的,不然一旦出现IP地址冲突,就会导致发送端无法区分应该把数据发给哪个地址。但是随着网络技术的不断发展和普及,IP地址不足的问题日趋显著,如果还是按照以前的放大采用唯一的地址的话,就会有IP地址耗尽的危险。对于那些没有连接互联网的独立网络也就是局域网中的主机,只要保证在这个局域网里边的地址设置成唯一的就可以了。 于是就有了私有IP和公有I...原创 2018-11-20 21:16:32 · 376 阅读 · 0 评论 -
IP协议
之前我们说到来的TCP/UDP等协议是传输层的协议,在网络层中也有一个很知名的协议--IP协议。IP能够让世界上任何两台计算机之间机型通信,IP协议主要负责的是将数据包发送给最终的目标计算机。网络层的主要作用是实现终端节点之间的通信,这种终端节点之间的通信也叫做点对点的通信,之前我们说过,网络层的下一层数据链路层的作用主要是在局域网之间进行包传递,一旦跨越多种数据链路,就需要借助网络层,网络层...原创 2018-11-19 16:56:09 · 610 阅读 · 0 评论 -
IP辅助协议一
之前我们简单介绍了IP协议,但是在我们访问一个网站的时候很好直接输入IP地址,并且数据包在网络传输的过程种在数据链路层也并不适用IP地址,所以仅仅有IP地址是不能完成我们的数据传输的,今天我们就来介绍一下辅助于IP的其他协议。 我们都听过mac地址这个概念,mac地址是我们网卡的物理地址,世界上每一个网卡都有一个唯一的mac地址,不会有重复的,那有没有想过这个问题,我们在学习IP的时候就...原创 2018-11-24 17:53:13 · 497 阅读 · 0 评论 -
IP辅助协议二
关于IP协议还需要一些其他的协议来辅助,比如我们在访问网站的时候并不会使用IP地址来访问,而是通过一串字符串,也就是我们说的域名来访问。但是网络访问的协议是需要IP地址的,那这是怎么实现的呢?用的就是我们的DNS服务。DNS服务就是将字符串转换成具体的IP地址,因为IP地址对于我们来说十分不便于记忆。TCP/IP协议自一开始就有了一个叫做主机识别码的东西,这种识别方式是给每一台计算机赋予了...原创 2018-11-26 16:21:31 · 368 阅读 · 0 评论 -
UDP和TCP
之前我们对TCP协议进行了一个简单的介绍,TCP(传输控制协议)是面向链接的、可靠的、面向字节流的传输层通信协议。今天我们主要介绍和他在同一层次上的UDP协议,并且对比一下他们两个有什么区别。相比起来TCP,UDP算是恰恰相反的一个协议,他是无连接、不可靠、面向数据报的。 UDP和TCP、IP一样他也拥有自己的头部,不过他的头部信息十分的简单,UDP的头部包含源端口,目标端口,...原创 2018-10-23 20:50:54 · 263 阅读 · 0 评论 -
TCP协议讲解二
慢慢的到了夏天,天气越来越潮湿了,西安虽然很干旱,但是在西安到北京的路上阴雨天气越来越多,大华抱怨到:最近的纸飞机越来越脆弱了,经常就给丢了,烦的一批。我们得想想办法解决啊。 小胖说,要不这样我们在这一路多安插一些人手,让我们的纸飞机一直在我们的视野中,给他们站好岗。 大华就急了:哪来那么多人,给你站岗去,再说了,这么远的路,我一千米一个岗,我耗费多大的人力物力。 小...原创 2018-10-21 15:44:46 · 221 阅读 · 0 评论 -
HTTP状态码
我们在介绍响应报头的时候提到了HTTP的状态码的概念,状态码跟随着响应表报头一同返回回来,今天我们主要来讲一下状态码有哪些各自的含义是什么? 状态码就是告诉我们服务器响应的状态,通过它我们能明白我们的状态码由三个十进制的数字组成,第一个十进制数字定义了状态码的类型,后边两个数字没有分类的作用。HTTP状态码分为五类一.1XX:表示请求已经接受,需要请求者继续执行操作二.2XX:代...原创 2018-10-12 12:48:55 · 424 阅读 · 0 评论 -
在浏览器上请求一个URL的全部过程
当我们在浏览器中输入一个网址的时候主要经过了六个步骤来最终把网页完整的展现给我们。 第一步要进行的就是域名解析 我们在浏览器中输入的是一个www.baidu.com,浏览器首先要做去获得我们想访问网页的IP地址,浏览器会发送一个UDP的包给DNS域名解析服务器。DNS就会返回给我们百度的IP地址,通常来说浏览器会把访问过的网站的IP保存下来,这样下次访问的时候就会快很多,能够节省很多...原创 2018-10-13 10:29:34 · 4182 阅读 · 0 评论 -
HTTP和HTTPS的区别
我们介绍了很多关于HTTP的东西,但是现在访问网页的时候,大多数网页都是用的HTTPS协议,HTTP超文本协议被用在客户端和服务器之间传输信息,但是HTTP协议是以明文的当时来发送内容,并不提供任何加密方式。如果有攻击者拦截了浏览器和服务器之间发送的数据,就能读懂其中的数据信息,这样就就导致HTTP很不安全,所以HTTP协议就不适合传输敏感信息。为了解决这个问题就有了能够保护我们数据安全传输...原创 2018-10-13 15:46:58 · 363 阅读 · 0 评论 -
GET和POST的区别
HTTP在客户端请求服务器的时候,大多数用到了两种方法GET和POST两种方式。简单来说GET是从指定的资源请求数据,而POST来说是向指定的资源去提交要被处理的数据。 GET使用URL或cookie进行传参,而POST请求的时候数据在BODY中 GET的URL长度会有一定的限制,但是POST里边没有。但是实际上在协议的规定中对于HTTP的头和HTTP的实体部分...原创 2018-10-13 22:24:44 · 399 阅读 · 0 评论 -
cookie和session的区别
今天我们要介绍的是cookie和session,为什么要有这两个机制?HTTP是一个无连接的协议,也就是说他把每一次的链接都当成新的链接,我不知道你上次来过,你在上一个界面登录了,我这个界面是不知道的。所以为了分辨这个链接是谁发起的,就需要我们自己来解决问题。而session和cookie就是来解决这个问题的。 简单的来说cookie是客户端保持状态的方案,而session机制则采用...原创 2018-10-14 21:56:15 · 306 阅读 · 0 评论 -
HTTP长连接短连接
我们在介绍HTTP各版本区别的时候说过,HTTP1.1和1.0的区别就是1.1默认情况就是长链接的而在1.0版本里就需要通过头部Connection: Keep-alive来说明链接情况,如果不说明可能就是短连接了。 那到底什么是长链接什么是短连接,这两个又有什么区别呢? HTTP链接是在应用层的协议,他是建立在传输层协议TCP协议和网络层协议IP协议上,IP协议主要解决了网...原创 2018-10-15 15:51:47 · 2799 阅读 · 0 评论 -
HTTP如何实现长链接
长链接确实在某些时候有很多的优点,要比我们的短链接方便一些,但是我们都知道在学习HTTP的时候就说过这是一个无状态、无链接的一个协议,那他是怎么来实现我们的长链接的? 如果要想弄清楚怎么实现长链接的就要清楚,那些情况会把我们的长链接断开。 长链接所在进程被杀死,这是很容易理解的一种情况,进程杀死自然就断了。 NAT超时,这里我们介绍一下NAT,我们都知道在IPV4下,...原创 2018-10-15 23:38:14 · 4695 阅读 · 0 评论 -
HTTP各版本区别
HTTP协议全称HyperText Transfer Protocol,中文名超文本传输协议。是互联网上应用最为广泛的一种网络协议。HTTP是基于TCP/IP协议的应用层协议,不涉及数据包的传输,主要是规定了客户端和服务器之间的通信格式。默认使用80端口。现在HTTP已经演化出了很多个版本。 HTTP 0.9是最早发现的一个版本,在1991年发布,但是现在已经过时了,因为它只允许客户端发送...原创 2018-10-10 16:43:00 · 4546 阅读 · 0 评论 -
OSI参考模型
今天我们主要来讲解一下网络里边的OSI参考模型。 在经过最初商议之后,制定了一个网络体系结构OSI模型,OSI的全称为Open System Interconnection 开放系统互联,在这个模型中将通信协议中必要的功能划分成了七层,通过将网络分层,然后使得那些比较复杂的网络协议变的更加的简单化。 在这个模型中每一层都接受由他的下一层为他提供的服务,并且他也为自己的上一层提...原创 2018-10-22 15:38:13 · 1175 阅读 · 0 评论 -
多进程版本TCP聊天程序服务端
我们上次写了利用TCP协议来实现的简单的网络聊天程序,我们实现的是一对一的聊天, 但是如果我们通过上次的程序来实现多对一呢? 我们可以看出来其中一个客户端可以和服务端正常交流,但是另一个客户端是链接不上服务端的,即使原来的客户端退出了,新的客户端也是链接不上的。因为我们的程序当链接成功之后会通过while循环来一直调用read函数,并没有再去调用我们的accept函数,所以...原创 2018-10-28 16:32:07 · 505 阅读 · 0 评论 -
多线程版本TCP聊天程序服务端
这是一个通过多线程来实现可以接受多个客户端的TCP聊天程序。 //这是一个实现多线程TCP的聊天程序服务端#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<unistd.h>#include<s...原创 2018-10-28 21:01:43 · 727 阅读 · 0 评论 -
TCP协议讲解一
我想给在北京上学的同学发一份包裹,所以我就去了菜鸟驿站找到了大华。我跟他说:“大华我要往北京的同学那里发一份包裹你帮帮我呗”。大华说:“好,可是北京那边有这么多通道你准备走哪一个通道?”我:“那就走80这个通道吧(TCP协议默认端口80)”我跟着大华来到了菜鸟驿站的后边,大华说不急,你先等我跟北京的小胖建立一个连接再说。大华拿出一张纸写了“发货地址:西安市233号,收货地址:北京8...原创 2018-10-21 14:13:20 · 533 阅读 · 0 评论 -
IP辅助协议三
如果我们每次上网前都给我们的主机设置一个IP是非常麻烦的事情,到现在IP地址已经不够用了,所以不存在说给每个主机固定一个IP,所以我们的移动端笔记本、平板电脑等每到一个新的地方可能都需要设置一个新的IP,但是这样就十分的繁琐,所以就有了DHCP协议动态主机设置协议,有了DHCP之后我们的计算机只要连接到网络就可以进行通信,DHCP让我们上网变成了即插即用。在没有DHCP服务的网络中,用户接入...原创 2018-11-27 22:16:37 · 278 阅读 · 0 评论