TCP/UDP协议, 以及Socket通信

写于: 2016年05月04日

TCP协议基本介绍

TCP协议是自IP协议出来后有一常用的信息传输协议. 是一个基于连接的、安全的、双向的传输协议.

现在, TCP协议一般都和IP协议共同使用, 我们称之为TCP/IP.

TCP说白了就是互联网扩张的时候, 数据从一段经过无数个路由器和交换机到达指定的另一端的解决方案, 该方案包括最小路径、最快时间、下一站路由器的选择等.

在计算机中的TCP协议

我们的计算机或者手机, 在连入网络之后, 就可以和别的设备做信息交互.

TCP协议要做到的 就是保证你的信息能够准确、安全、快速地发送到你要发送的另一台设备上.

识别一台设备的唯一方式就是用IP地址.

每一台计算机或者手机, 连入网络之后都会有一个独立的IP地址, 这个IP地址用于标识这台设备, 并且IP地址不会与别的设备共用.

TCP的传输原理

定义两台计算机 S、C.

计算机S: Service, 服务器

计算机C: Client, 客户端

TCP协议规定, 两台设备传输协议签必须要进行连接 (基于连接的传输协议), 同时服务器不能主动向客户端提出连接, 只有客户端才能主动向服务器发送连接请求.

TCP协议规定, 实现TCP协议的客户端必须要有一个端口号. 端口号是一个1~65535的整数. 该整数用于区分应用程序 (比如比的电脑上的QQ支持TCP协议, 浏览器支持TCP协议, 端口的定义就是为了保证QQ服务器发过来的数据能够被QQ进程所接受, 而不是给你的浏览器进程. 理论上, 只需要两个端口号不一样即可).

C 主动向 S 发出连接请求, 连接成功后, S会发送给C一个连接成功的标识数据, C收到这个数据表示连接成功, 之后两台设备就可以进行信息交互.

这两台设备连接成功之后, 均可以主动向另一端发送消息.

这里定义你的电脑IP是111.111.111.111 QQ进程的端口号就是8888.

QQ服务器的IP是222.222.222.222 QQ服务器的端口号是9999.

你的 QQ 1234 要给一个QQ 4321发送一条消息叫"您好".
QQ进程会进行数据打包, 加入是JASON数据:

{
       sourceId : "1234"
       targetId : "4321"
       content : "您好"
}

然后 QQ进程便会提交TCP请求, 也就是"吧这个JSON数据发送到222.222.222.222的9999端口号上" .

操作系统便会吧JSON数据和IP数据以及端口号打包成一个特定的格式(TCP报文). 然后转为二进制数据, 最后变为正弦的模拟信号, 从你的计算机网卡发出, 到路由器, 再到因特网.

QQ服务器收到数据后, 会隐藏式地发送一个接收确认帧 (这个确认帧是TCP规定的, 不是腾讯微了安全起见而特意写的), 你的计算机收到这个确认帧, 代表本次消息发送成功. 如果你的计算机长时间没有收到确认帧, 代表本次信息传输失败(所以你可以知道这个消息是否安全的发送到你想要的位置) .

UDP协议基本介绍

UDP协议和TCP协议是在同一层次上的, 但是UDP协议是基于广播的协议.

广播和连接的区别

TCP就好比打电话,A有事情告诉B,但是B并不知道A有事情要告诉 他,所以B不会打电话给A。而A要主动打电话给B,只有打电话成功, 并且B拿起电话后,AB才能语言交流,并且AB可以立马知道对方是否 听清自己说了什么

UDP就好比广播,在一个广场上,有一大堆人,你想要把一个消息通 过一个喇叭告诉一个叫“小新”的人。但是你不知道“小新”到底在广场的 什么位置,甚至他到底有没有在这个广场上你都不确定。你拿起一个 麦克风,说“小新,你妈喊你回家吃饭”。你从外面的广播听到了这条 消息,所以你觉得你的消息发送成功了。现在结果有三种:第一种, 广场上压根就没有叫“小新”的人,所以没人在乎你说什么;第二种, 你想找的那个“纪小新”真的在广场上,他听到你的消息后乖乖回家吃 饭了;第三种,广场上不但有“纪小新”,还有“张小新”,结果两个人都 各自回家吃饭了。后两种情况可能会出问题,比如“纪小新”听到消息 后,并不知道谁告诉他的,也不知道这个消息的真实性,所以他会很 纠结。

从上面可以总结UDP是一个基于非连接的、不安全的、单项的传输协议.

在计算机中的UDP协议

内容和TCP差不多, 但去呗在于UDP的"发送成功"是指消息成功从你的电脑上发出, 而不是接受者真的接收到了你的消息

UDP传输原理

UDP传输不需要连接, 发送端只需要把自己的消息打包好(UDP报文), 然后从电脑上发到因特网即可, 不会有任何的确认帧来反馈给你.

为什么存在UDP协议

UDP协议如此不安全, 为什么会存在??

其实很简单, TCP的安全是有资源代价的, 一个TCP报文要安全传输, 必须要有资源对其进行监视才可以. 就像你双十一买的东西, 你每天都要刷一刷物流信息一样.

UDP不安全, 但占用的资源较少, 所以一般不需要有安全传输要求的信息可以使用UDP传输.

Socket

Socket是一个类, 每个编程语言都有自己的Socket. Socket就是单纯的协议实现.

TCP和UDP只是一个协议、一个规定. 而Socket就是一个遵守这个协议, 遵守这个规定的执行者.

每一个终端都可以通过Socket实现TCP和UDP的信息交互.

比如
iOS端实现TCP协议的类叫做NSSocket.
Android端实现TCP协议的类叫做JSocket.

虽然这是连个不同语言的不同类, 但是他们都遵循TCP协议. 所以他们可以在不同类型的操作系统上实现信息交互, 从而实现iOS和Android的信息交互.

HTTP协议基本介绍

HTTP本质上是一种协议, 全称是Hypertext Transfer Protocol, 即超文本传输协议.
HTTP协议是基于TCP协议拓展出来的协议, 与HTTP协议一样的还有SMTP协议、POP3协议、FTP协议等.

实现原理

现在客户端要发送 http://wwww.baidu.com/httptext?school=taili&name=nunu&class=ios

客户端要做的事情

1.到全球域名解析获取www.baidu.com的真实IP地址 (加入得到123.123.123.123)
2.创建一个Socket连接123.123.123.123的8080端口
3.连接成功继续, 连接失败停止.
4.发送一个TCP报文, 内容是"HTTP/1.0/httptext...{school.taili.name=nunu,class:ios}"
5.等待服务器回传 (此时服务器快速把数据发给你).
6.断开连接.

==HTTP、Socket、TCP的区别, 烦请关注另一篇 ==

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容