프로토콜 Protocol
어떤 시스템이 다른 시스템과 통신을 원활하게 수용하도록 해주는 통신 규약, 약속이다.
데이터의 교환 방식을 정의하는 규칙 체계를 정해놓는 것이다.
프로토콜의 기본 요소
구문(Syntax)
- 전송하고자 하는 데이터의 형식(Format), 부호화(Coding), 신호 레벨(Signal Level) 등을 규정
의미(Semantics)
- 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정
시간(Timing)
- 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정
프로토콜 종류 / OSI 7계층
OSI 7계층이란, 통신 접속에서 완료까지의 과정을 7단계로 정의한 국제 통신 표준 규약
응용(Application)
- 사용자가 네트워크에 접근할 수 있도록 서비스 제공
- HTTP, SMTP, FTP, Telnet
표현(Presentation)
- 세션 계층 간의 주고받는 인터페이스를 일관성있게 제공
- ASCII, MPEG, JPEG, MIDI
세션(Session)
- 통신 시스템 사용자간의 연결을 유지 및 설정
- NetBIOS, SAP, SDP, NWLink
전송(Transport)
- 두 host 시스템으로부터 발생하는 데이터 흐름 제공
- TCP, UDP, SPX
네트워크(Network)
- 패킷을 네트워크 간의 IP를 통해 데이터 전달 (라우팅)
- IP, IPX
데이터 링크(Data Link)
- 송/수신 확인. MAC 주소를 가지고 통신 (브릿지, 스위치)
- Ethernet, Token Ring, FDDI, Apple Talk
물리(Physical)
- 전송하는데 필요한 기능을 제공 ( 통신 케이블, 허브 )
- X
프로토콜의 기능
단편화(Fragmentation) & 재합성(Assembly)
- 단편화 : 송신 측에서 긴 데이터 블록을 손쉽게 전송할 수 있도록 크기가 똑같은 작은 블록으로 나누어 전송
- 재합성: 수신 측에서 쪼개진 작은 데이터 블록을 재합성하여 원래의 메시지로 복원하는 기능
캡슐화(Encapsulation)
- 각 프로토콜에 적합한 데이터 블록을 만들기 위해 데이터에 정보를 추가하는 것
- 플래그, 주소, 제어 정보, 오류 검출 부호 등을 부착하는 기능
연결 제어(Connection Control)
- 비연결 데이터 전송(데이터그램)과 연결 위주 데이터 전송(가상회선)을 위한 통신로를 개설·유지·종결하는 기능
흐름 제어(Flow Control)
- 데이터양이나 통신속도 등이 수신 측의 처리 능력을 초과하지 않도록 조정하는 기능
오류 제어(Error Control)
- 데이터 전송 중 발생할 수 있는 오류나 착오 등을 검출하고 정정하는 기능
순서 결정(Sequencing)
- 연결 위주의 데이터를 전송할 때 송신 측이 보내는 데이터 단위 순서대로 수신 측에 전달하는 기능
주소 설정(Addressing)
- 발생지, 목적지 등의 주소를 명기하여 데이터를 정확하게 전달하는 기능
동기화(Synchronization)
- 두 통신 객체의 상태(시작, 종류, 검사 등)를 일치시키는 기능
다중화(Multiplexing)
- 하나의 통신로를 여러 개로 나누거나 회선 여러 개를 하나의 통신로로 변환시켜 다수의 가입자가 동시에 사용할 수 있도록 하는 기능
전송 서비스(Transmission Service)
- 통신 객체를 사용하기 쉽도록 별도로 추가 서비스(패리티 검사, 보안도, 서비스 등급, 우선순위 등)를 제공하는 기능
TCP/IP 프로토콜 스택 4계층
LINK 계층
- 물리적인 영역의 표준화에 대한 결과
- 가장 기본이 되는 영역으로 LAN, WAN과 같은 네트워크 표준과 관련된 프로토콜을 정의하는 영역
IP 계층
- 경로를 검색해주는 계층
- IP 자체는 비연결지향적이며 신뢰할 수 없는 프로토콜
- 데이터를 전송할 때마다 거쳐야할 경로를 선택해주지만, 경로가 일정하지 않음
- 데이터 전송 중에 경로상 문제가 발생할 때 데이터가 손실되거나 오류가 발생할 수 있는 문제 발생 가능성이 있음
- 따라서 IP계층은 오류 발생에 대한 대비가 되어있지 않은 프로토콜이다.
TCP/UDP (전송) 계층
- 데이터의 실제 송수신을 담당
- UDP는 TCP에 비해 상대적으로 간단하고, TCP는 신뢰성이 있는 데이터 전송을 담당
- TCP는 데이터 전송 시 IP 프로토콜이 기반이다.
- IP의 문제 (오류발생 대비X)를 해결해 주는 것이 TCP이다.
- 데이터의 순서가 올바르게 전송되었는지 확인하며 대화를 주고받음
- 이처럼 확인 절차를 거치며 신뢰성이 없는 IP에 신뢰성을 부여한 프로토콜이 TCP이다.
애플리케이션 계층
- 서버와 클라이언트를 만드는 과정에서 프로그램 성격에 따라 데이터 송수신에 대한 약속들이 정해지는 것
GET과 POST의 차이는?
GET과 POST는 HTTP 프로토콜을 이용해 서버에 무언가 요청할 때 사용하는 방식이다.
GET
- URL을 통해 모든 파라미터를 전달하기 때문에 주소창에 전달 값이 노출됨.
- URL 길이가 제한이 있기 때문에 전송 데이터 양이 한정되어 있고, 형식에 맞지 않으면 인코딩해서 전달해야 함
- SELECT 성향이 있어서 서버에서 어떤 데이터를 가져와서 보여주는 용도로 활용
- 보통 데이터를 가져올 때 많이 사용한다.
POST
- HTTP BODY에 데이터를 포함해서 전달함.
- 웹 브라우저 사용자의 눈에는 직접적으로 파라미터가 노출되지 않고 길이 제한도 없음.
- 서버의 값이나 상태를 바꾸기 위해 활용
- 보통 어떠한 일을 수행하는 역할로 사용한다.
'CS' 카테고리의 다른 글
[네트워크] 라우터 Router (feat. 스위치) (0) | 2023.01.01 |
---|---|
동기와 비동기 (0) | 2022.12.30 |
[네트워크] OSI 7 계층 (2) | 2022.12.30 |
MSA(Micro Service Architecture) 마이크로 서비스 아키텍처 개념 (0) | 2022.12.29 |
객체지향 / 절차지향 프로그래밍 (2) | 2022.12.27 |