티스토리 뷰
통신 프로토콜
'프로토콜'에는 쌍방의 합의된 약속이라는 의미가 있다. 따라서, 원거리 통신에서 정보를 주고 받는 양식과 규칙이 곧 '통신 프로토콜'이다.
OSI 모델
프로토콜은 산업 표준 OSI 참조 모델에 기반을 두고 이들의 기능에 따라 구분된다. 이 모델은 네트워크 통신을 이해하는 데 도움이 되지만 이제는 더이상 산업 표준으로 추천되지 않는다. 프로토콜 개발자들은 OSI 모델을 강요받지 않으며 OSI 모델이 유일한 네트워크 모델도 아니다. 오히려 많은 사람들이 TCP/IP 모델로 DoD 모델을 더 선호한다.
상위-하위는 좋고 나쁨이 아니라 기계와 가까운 정도로 나뉜다. 이전에 포스팅한 고급-저급 언어와 비슷한 개념으로 아래는 계층별 데이터 단위와 일반적으로 사용되는 프로토콜 그에 대한 설명을 표로 나타내었다.
Top |
데이터 단위 / 프로토콜 |
설명 |
|
7계층 |
응용 계층 |
메시지, 데이터 / HTTP, SMTP, FTP, Telnet |
사용자에게 네트우크 자원에 대한 접근을 제공. 인터페이스를 제공하며, 사용자에게 보이는 유일한 계층이다. |
6계층 |
표현 계층 |
메시지, 데이터 / ASCII, MPEG, JPEG, MIDI |
응용 계층으로 부터 전송받거나 전달되는 데이터의 인코딩, 디코딩을 수행한다. 안전한 데이터 사용을 위해 몇가지 암호화 및 복호화 형식도 가지고 있다. |
5계층 |
세션 계층 |
메시지, 데이터 / NetBIOS, SAP, SDP, NWLink |
두 대의 컴퓨터 사이의 세션 및 대화(Dialogue) 즉, 통신 장비를 연결하고 관리한다. 또, 순간적으로 연결이 끊어지는 것을 막고 호스트 사이의 연결을 적절하게 종료시키는 기능이나 단방향 or 양방향 연결을 담당한다. |
4계층 |
전송 계층 |
세그먼트 / TCP, UDP, SPX |
이 계층의 중요한 역할은 아래 계층에 대한 신뢰성에 있다. 형태에는 흐름 제어, 분할, 재조립, 오류 관리를 포함하지만 전송 계층은 각 지점 간의 오류없음을 보장해준다. 전송 계층엔 연결 지향적 프로토콜, 비연결 지향적 프로토콜이 있으며 방화벽과 프록시 서버가 이 계층에서 동작한다. OSI 계층 중 가장 중요한 계층이다. |
3계층 |
네트워크 계층 |
패킷, 데이터그램 / IP, IPX |
이 계층은 가장 복잡한 OSI 계층으로 물리적 네트워크 사이의 라우팅을 담당하며 라우터가 이 계층에서 동작한다. 또한 네트워크 호스트의 논리주소(ex> IP 주소)를 관리하고 패킷을 분할하여 프로토콜을 식별하는 기능, 오류 탐지 같은 몇가지 기능을 수행한다. |
2계층 |
데이터링크 계층 |
프레임 / Ethernet, Token Ring, FDDI, Appletalk |
물리적 네트워크 사이의 데이터 전송을 담당, 이 계층의 중요한 역할은 물리적 장비를 식별하는 데 사용되는 주소 지정 체계가 변조되지 않았음을 보증하기 위한 오류확인 제공에 있다. 브릿지와 스위치가 이 계층에서 동작하는 물리적 장비이다. |
1계층 |
물리 계층 |
비트 / X (모든 물리적인 장치) |
이 계층은 네트워크 데이터가 전송될 때 사용되는 물리 매체에 해당한다. 전압, 허브, 어댑터, 리피터, 케이블을 포함한 모든 하드웨어의 물리적이고 전자적인 특성을 정의한다. 물리 계층은 연결 설정/종료 및 공유된 통신 자원 제공, 디지털-아날로그 변환을 담당한다. |
Down |
|
|
클라이언트-서버간 전송, 데이터 캡슐화
데이터를 보낼 때에는 Top - Bottom 순서대로 OSI 계층을 거치게 된다. 이 과정에서 캡슐화를 진행하는데 계층간의 통신에선 상단의 정보단에 새로운 정보를 추가하여 다음 계층으로 전달한다. PDU(Protocol Data Unit)은 데이터 단위이며 OSI 모델의 정보 처리 단위이다. 이는 캡슐화 과정에서 생성된다. 물리 계층에서 PDU는 최종단계로 변환되어 물리장치를 통해 전송된다. 이와 반대로 수신측에서는 PDU로 부터 정보단을 잘라내어 프로토콜을 분석하게 된다. 이를 반복하면 최상단 응용 계층에선 원본 데이터만 남게된다.
데이터링크 계층의 PDU가 프레임(Frame)이 되며, 네트워크 계층의 PDU는 패킷(Packet), 전송 계층의 PDU는 세그먼트(Segment)으로 부른다.
효율적인 통신
통신의 공학적인 의의는 정확한 정보의 전송뿐만 아니라 경제성 또한 중요한 포인트가 된다. 따라서 통신 프로토콜은 정확하고 효율적인 정보 전송을 위한 여러가지 약속의 집합이다. 그 내용에 대해 알아보자.
- 에러제어 : 통신의 주체는 일반적으로 원격지에 존재한다. 때문에 먼 거리를 이동후에 변하지 않아야한다. 노이즈의 영향을 적게 받거나 노이즈에서 정확하게 정보를 빼낼 수 있어야한다. 따라서 이런 노이즈에 대한 대처에 대해서도 사전 약속이 필요하다.
- 동기화 : 정확하고 효율적인 전송을 위해서 동기(synchronization)는 매우 중요한 요소이다. 송수신 단에서 한 비트의 수신 시간을 서로 다르게 사용하거나 메시지의 시작 지점을 다르게 설정한다면 송수신 단의 데이터는 일치하지 않게된다. 따라서 이러한 동기화에 대해서도 사전 약속이 필요하다.
- 흐름제어 : 정보 흐름의 양을 조절하는 흐름제어(Flow control)는 한번에 너무 많은 데이터를 보내게 되면 수신측에서 미처 받아들이지 못하는 정보가 생길 경우를 막는다.
- 안전성 : 통신간에 정보 유출이 되는 것은 아무도 원하지 않을 것이다. 이를 위해 통신간에 보안을 추가하고 이를 복호화하는 규약 또한 서로간의 약속이 된다.
TCP / IP
인터넷 프로토콜 스위트(Internet Protocol Suite)는 인터넷에서 컴퓨터간의 통신 프로토콜(통신 규약)이다. TCP/IP(Transmission Control Protocol / Internet Protocol)는 이 인터넷 프로토콜 스위트에서 가장 많이 쓰이기 때문에 인터넷 프로토콜 스위트는 대부분 TCP/IP를 의미한다.
- TCP : 정보 패킷 차원에서 다른 인터넷 노드와 메시지를 상호 교환하는데 사용하는 규칙
- IP : 인터넷 주소 차원에서 메시지를 주고 받는데 사용하는 규칙
인터넷 프로토클 스택은 아래와 같은 계층을 가지고 있다.
Top |
계층명 |
종류 |
5 |
응용 계층 |
DNS, TFP, HTTP, IMAP, Telnet, SMTP, ECHO, SIP, SSH 등 |
4 |
전송 계층 |
TCP, UDP, DCCP, SCTP, IL, RUDP 등 |
3 |
인터넷 계층 |
IP(IPv4, IPv6) |
2.5 |
ARP |
ARP, RARP |
1, 2 |
네트워크 인터페이스 계층 |
이더넷, Wifi, 토큰링, PPP, SLIP, FDDI, ATM, SMDS 등 |
Bottom |
|
|
응용(Application) 계층 : 다른 계층의 서비스에 접근할 수 있게 해주는 애플리케이션을 제공한다.
- HTTP : www의 웹 페이지 파일을 전송하는데 사용된다.
- DNS : 호스트 이름을 IP주소로 변환하기 위해 사용된다.
전송(Transport) 계층 : 상위 계층에 데이터 그램, 통신 서비스를 제공한다. TCP, UDP 모두 IP 기반이지만 UDP는 IP와 비슷하게 동작하고 TCP는 그렇지 않다.
- TCP : 일대일 연결, 신뢰할 수 있는 통신 서비스, 연결에 대한 신뢰성, 패킷 확인, 순서화, 전달 과정 중 손상된 패킷 복구 등의 역할을 한다.
- 커넥션 기반
- 안정성 보장
- 순차적 전달
- 흐름제어, 처리할 수 있는 수준의 속도로 보내준다.
- 데이터를 자동으로 잘라 패킷에 담는다.
- UDP : 일대일 또는 일대다의 비연결 통신. 신뢰할 수 없는 통신, 데이터의 크기가 작을 때나 연결 확립에 의한 부하를 피하기 위해 사용한다.
- 커넥션 기반 X, 직접 구현해야 함
- 안정적이지 않음
- 순차적이지 않음
- 회선이 처리할 수 있게 나누어 보내야 함
- 데이터가 크면 직접 패킷 단위로 잘라 보내야 함
- 위 같은 내용으로 보면 TCP가 월등히 좋아보인다. 하지만 TCP의 특징 때문에 다음과 같은 문제가 발생한다. TCP는 스트림 프로토콜로 스트림을 패킷으로 나누어 전달한다. 패킷으로 나뉜 스트림은 내부 큐에서 지연된다. 충분한 패킷이 버퍼에 모일 때 까지 보관만 하고 있는 것이다. 또 동기화 과정에서 패킷에 오류가 발생하면 새로 받을 때까지 기다려야 한다. 순차적 실행이므로 무결성 판별이 끝나지 않으면 다음 데이터를 받을 수 없다. 이러한 이유로 TCP는 네트워크 게임에 적합하지 않습니다.
인터넷(Internet) 계층 : addressing, packaging, routing 기능을 제공한다.
- IP(Internet Protocol) : 어드레싱과 패킷의 분해, 조립을 책임지는 역할을 한다.
- ARP(Address Resolution Protocol) : 인터넷 계층 주소를 네트워크 인터페이스 계층의 주소(하드웨어 주소)로 변환하는 역할을 한다.
- ICMP(Internet Control Message Protocol) : IP패킷의 전달에 따른 오류나 상태를 리포트하고 진단하는 기능을 제공하는 역할을 한다.
- IGMP(Internet Group Management Protocol) : IP 멀티캐스트 그룹의 관리를 책임진다.
네트워크 인터페이스 계층 : TCP/IP 패킷을 네트워크 매체로 전달하는 역할 - OSI 모델에서 물리계층에 해당한다.
HTTP 통신 / Socket 통신
HTTP(Hyper Text Transfer Protocol) : html로 작성된 문서를 클라이언트 측에 잘 보여주기 위한 것을 목적으로 하는 프로토콜로 TCP와 UDP를 사용하며 80번 포트를 사용한다. 클라이언트-서버 사이의 하나의 연결을 통해 request를 먼저 보내고 response를 나중에 받는 형태의 프로토콜입니다. 이러한 통신 방식은 양쪽이 동시에 데이터를 보내는 것이 아니므로 반이중 통신(Half-duplex)라고 합니다. 데이터 전송 효율이 떨어지며 클라이언트와 서버간에 접속을 유지하지 않기 때문에 매번 접속을 유지해야하는 등의 문제가 발생합니다.
Web Socket : 웹 소켓은 기존 HTTP 통신의 단점을 보완하기 위해 등장했다. 웹 소켓 프로토콜은 안전하고 빠른 데이터 전송이 가능한 양방향 통신을 지향한다. 웹 소켓 연결은 HTTP 기반의 교환으로 실시되며 교환에 성공하면 기존 TCP 연결을 사용해 응용 프로그램 계층 프로톨콜이 HTTP에서 Socket 프로토콜로 업그레이드 된다. 때문에 HTML5에 Websocket이 포함되었다. 웹 소켓을 사용하면 Active X를 사용하지 않고도 TCP/IP Socket 통신을 구현할 수 있다. 또한 네트워크 과부하를 줄이고 애플리케이션의 반응성도 높일 수 있다.
HTTP 통신은 클라이언트의 요청이 있을 때 순간적으로 자료를 전송하고 연결을 끊습니다. 따라서 초기에만 연결이 되어있고 이후에는 연결이 끊어진 상태의 화면을 보는 것입니다. F5키를 연타하는 등으로 억지로 연결을 유지하게 되면 응답이 느려지게 되는데 이러한 행위를 DDOS 공격이라고 합니다. Socket 통신에서는 클라이언트와 서버의 연결을 제한하여 일정량의 커넥션을 유지합니다. 이러한 통신은 실시간 정보 교환이 필요한 경우에 사용합니다.
'프로그래밍' 카테고리의 다른 글
[DSP]파일 보관소 (0) | 2018.11.02 |
---|---|
Url의 구조 (1) | 2017.12.22 |
- Total
- Today
- Yesterday
- vue
- MySQL
- node.js
- Quasar
- nosql
- 이진탐색 #중복
- SQLite
- Angular
- Next.js
- PostgreSQL
- DevOps
- garbage collection
- RDBMS
- Gatsby.js
- hoisting
- alpine.js
- gcp
- LINQ
- aws
- delegate
- JavaScript
- svelte
- nuxt.js
- Cloud
- C#
- oracle
- REACT
- .NET
- Azure
- vue.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |