티스토리 뷰
인터넷은 우리의 삶을 아주 편리하게 만들어 주는 통신기술입니다. 우리는 컴퓨터에서 브라우저라는 애플리케이션을 통해 데이터를 손쉽게 전송하고, 수신받을 수 있습니다. 우리가 전송한 데이터가 어떻게 목적지까지 전달하고, 어떻게 다시 응답이 올 수 있는지 이해하기 위해서는 OSI 네트워크 계층의 동작을 전반적으로 이해하고 있으면, 다른 사람에게 손쉽게 설명할 수 있습니다.
이번 포스팅에서는 OSI 네트워크 계층과 자주 사용하는 TCP/UDP 통신에 대해 알아보겠습니다.
OSI 7 계층 개요
OSI 7 계층이라 하면, 컴퓨터 네트워크 프로토콜과 통신 계층을 말합니다. 계층은 아파트 계단과 같다고 생각하면 쉽습니다. 7층에 도달하기 위해서는, 1~6층을 올라야만 하는 것처럼, 네트워크도 상위 계층에 도달하기 위해서는 하위 계층을 모두 거쳐야 합니다. 하위 계층은 아날로그, 디지털 신호에 가까운 네트워크 통신 프로토콜 및 전송방법에 해당되고, 상위계층은 네트워크 및 애플리케이션에 도달하기 위한 프로토콜 및 전송방법을 주로 다룬다고 보시면 됩니다. OSI 7 계층에 대한 설명은 아래와 같이 간략하게 정의할 수 있습니다.
OSI 7 Layers
- 정의 : 네트워크에서 통신이 일어나는 과정을 7단계로 분류한 계층
- 7 계층 (Application Layer) : 사용자와 직접 상호작용하는 응용 프로그램들이 포함된 계층
- 6 계층 (Presentation Layer) : 데이터의 형식을 정의하는 계층
- 5 계층 (Session Layer) : 컴퓨터끼리 통신하기 위해 세션을 만드는 계층
- 4 계층 (Transport Layer) : 최종 수신 프로세서로 데이터의 전송을 담당하는 계층 (UDP, TCP 이용)
- 3 계층 (Network Layer) : 패킷을 목적지까지 가장 빠른 길로 전송을 담당하는 계층 (IP주소로 전송)
- 2 계층 (Datalink Layer) : 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층 (MAC 주소로 전송)
- 1 계층 (Physical Layer) : 데이터를 전기신호로 바꾸어주는 계층
프로그래머는 네트워크 통신 프로토콜을 말할 때, TCP/IP와 UDP를 많이 언급합니다. TCP/IP와 UDP는 데이터를 전송하는 방법에 차이가 있으므로, 두 통신 프로토콜의 차이점을 알아야 응용 애플리케이션을 구현할 때, 적합한 통신 프로토콜을 선택하실 수 있습니다.
TCP/IP
- TCP 프로토콜과 IP 프로토콜을 합쳐서 부르는 용어
- IP는 네트워크에서 패킷을 교환할 때, 목적지까지 빠르게 전송하기 위한 프로토콜이며, TCP는 목적지까지 데이터 손실 없이 무사히 도착하였는지, 순서가 올바른지, 네트워크의 혼잡도 고려하는 역할을 하는 프로토콜 임. TCP와 IP를 같이 자주 쓰이므로, TCP/IP로 묶어서 말함
TCP와 UDP의 차이점
TCP는 가상 회선을 만들어 목적지까지 전송할 논리적인 연결을 만들고, 각 패킷은 가상 식별 번호가 부여되어 패킷들이 순서대로 도착하고, 신뢰성이 높음. 통신은 1:1로만 가능하며 UDP에 비해 속도가 느리다는 단점이 있음
UDP는 패킷에 목적지 주소만 이용하여 전송되므로, 동일 패킷이라 하더라도 목적지까지 도착하는 네트워크 경로는 다를 수 있음. 통신은 1:1 1:N N:N이 가능하며, 연결과정이 없으므로, TCP보다 빠르지만 데이터 신뢰성을 보장하지 못한다는 단점이 있음
TCP의 혼잡 제어, 흐름 제어, 순서 제어 등이 가능한 이유는 헤더에 정보가 포함되어 있기 때문임. UDP 헤더는 목적지 주소 이외에 없다고 봐도 무방함.
TCP는 공장의 공정처럼 순서대로 흐르지만, UDP는 타 지역에서 지나가는 사람에게 길을 물어보며 찾는 방법이라고 이해하시면 좀 더 쉽게 기억하실 수 있을 것 같습니다.
TCP는 전송 지, 수신 지 간 가상 회선을 만들기 위해 세션을 만들고 종료하는데, handshake(악수) 형태로 패킷을 주고받습니다.
TCP의 3-ways handshake
3-ways handshake는 세션을 생성할 때 사용됩니다. 서버와 클라이언트는 SYN, ACK 패킷을 주고받으며 세션을 생성합니다.
- Client -> Server : TCP SYN 전송
- Client <- Server : TCP SYN ACK 전송
- Client -> Server : TCP ACK 전송
TCP의 4-ways handshake
4-ways handshake는 세션을 종료할 때 사용됩니다. 세션 생성할 때와 다르게 FIN 패킷을 통해 세션을 종료하겠다는 신호를 전달합니다.
- Client -> Server : FIN 전송
- Client <- Server : ACK 전송
- Client <- Server : FIN 전송
- Client -> Server : ACK 전송
'IT 기술' 카테고리의 다른 글
Oracle Database 메모리 구조 (PGA, SGA) (0) | 2022.07.16 |
---|---|
Notion으로 업무 일정 관리하기 (0) | 2022.07.15 |
코드 스멜(Code Smell) 유형 정의 (0) | 2022.07.13 |
C++ 개념정리 (0) | 2022.07.13 |
Springboot 빌드 및 실행하기 (0) | 2022.07.13 |
- Total
- Today
- Yesterday
- C++
- MPA
- python
- springboot build
- AWS
- 스프링부트빌드
- 테스팅 자동화
- OSI 7계층
- 멀티코어 멀티프로세서
- iframe 태그 찾기
- notion 업무일정관리
- 클린코드작성법
- 클린코드작성원칙
- TCP/UDP
- springboot 실행
- oracle 메모리
- notion
- 스프링부트실행
- 코드스멜 유형
- 디자인패턴
- springboot restapi
- 디자인패턴 구조패턴
- springboot rest api 서버
- API Gateway 캐싱
- oracle pga sga
- codesmell 유형
- selenium
- token
- 스프링부트 restapi
- SPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |