일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- solidity
- 명시도
- 불안정 정렬
- Factory 함수
- Relational Database
- react
- Factory Functions
- Hybrid Blockchain
- ES6 모듈
- short-circuiting
- UTXO
- #1인게임개발
- CLI
- #유니티
- 3티어 아키텍처
- CSS Specificity
- javascript
- Private Blockchain
- IP
- http 모듈
- 블록체인
- 텍스트 가운데 정렬
- SQL
- 안정 정렬
- CSS
- NoSQL
- npm
- skip ci
- caverjs
- 2티어 아키텍처
- Today
- Total
짹뚜 스튜디오
[네트워크] 프로토콜 본문
프로토콜이란 프로그램, 데이터, 파일 서비스 등을 다양한 네트워크가 주고받기 위해서 지켜야 하는 약속 또는 규칙을 공식화한 것이다. 주고받는 데이터의 종류도 다양하고 사용자 별로 환경도 다르기 때문에 그에 맞는 프로토콜이 다양하게 존재한다.
- HTML 파일을 주고받기 위한 HTTP,
- 메일을 주고받기 위한 SMTP,
- 파일을 업로드 또는 다운로드하기 위한 FTP 등등이 존재한다.
프로토콜의 기능
Fragmentation & Reassembly (분할 및 재조립)
데이터를 그대로 전송하는 것은 비효율적이고 많은 리소스를 낭비할 수도 있기 때문에 데이터를 패킷이라는 작은 조각으로 분해한 뒤에 전송을 하게 된다. 그리고 분해된 데이터를 받은 다음에 다시 조립을 한 뒤에 사용한다.
Encapsulation (캡슐화)
실생활에서 택배를 배송할 때 각각의 물품들을 따로 박스에 포장을 한 뒤에 박스 안에 무엇이 들어있는지 스티커를 붙여서 알려준다. 이러한 것처럼 작게 분해된 데이터들은 그냥 보내지는 것이 아닌 각각 포장을 한 뒤에 모두 하나의 상자에 담아서 데이터를 보낸다. 그리고 스티커를 붙이듯이 각 상자의 정보를 헤더라는 곳에 담아둔다. 그리고 상자를 풀 때는 포장한 순서의 반대로 풀면 된다. 이 과정을 역 캡슐화라고도 한다.
Flow Control (연결 제어)
데이터 전송의 시간과 양을 조절한다.
Synchronization (동기화)
택배 배송 업체와 주문자가 현재 주문 및 배송 상태를 똑같이 알고 있어야 하는 거처럼 송수신간 데이터를 주고받는 시점과 그 상태를 공유해서 일치시켜야 한다.
Sequence Control (순서 제어)
패킷 전송을 효율적으로 관리하기 위해서 각 패킷이 보내지는 순서대로 번호를 붙인다.
Error Control (오류 제어)
데이터 전송 과정에서 패킷을 전송받지 못하는 경우가 생기면 해당 패킷에 대한 재전송 요청을 한다.
이 외에도 다른 프로토콜 기능들이 있고 각 프로토콜마다 모든 기능을 사용할 수도 있고 필요한 기능만 사용할 수도 있다.
프로토콜의 구성요소
- Syntax (형식): 데이터를 어떤 식으로 구성할지와 같은 형식을 정의한다.
- Semantcis (의미): 데이터를 어떻게 제어할지, 오류가 발생했을 때는 어떻게 처리하는지 등등 제어와 관련된 정보를 정의한다.
- Timing (순서): 데이터 송수신의 속도를 조절하고 전송 순서를 관리한다.
'개발 공부 > 네트워크' 카테고리의 다른 글
[네트워크] HTTP (0) | 2022.02.03 |
---|---|
[네트워크] Domain과 DNS (0) | 2022.01.26 |
[네트워크] IP 주소와 Port (0) | 2022.01.25 |
[네트워크] URI vs URL vs URN (0) | 2022.01.25 |
[네트워크] 2 티어 / 3 티어 아키텍처 (0) | 2022.01.24 |