devops

OSI 7계층, TCP/IP 4계층 본문

DevOps/Network

OSI 7계층, TCP/IP 4계층

vata500 2022. 5. 16. 14:35
반응형

OSI 7계층와 TCP/IP 계층

데이터 플로우(Data) 계층과 어플리케이션(Application) 계층으로 구분한다. 이 구분은 데이터를 만드는 어플리케이션 부분과 데이터를 전달하는데 집중하는 하부 계층으로 구분하는 것에 목적을 둔다.

그러나 현대 네트워크는 대부분 합리적이고 성능이 우수한 TCP/IP 프로토콜과 이더넷으로 이루어져있다. 그래서 TCP/IP 계층은 이론보다는 실용성에 중점을 둔 프로토콜이다.

OSI 7계층

  • 물리 계층 : 주로 물리적 연결과 관련된 정보를 정의한다. 주로 전기 신호를 잘 전달하는 것이 목적
  • 데이터 링크 계층 : 물리 계층에서 들어온 전기 신호를 모아 알아 볼 수 있는 데이터 형태로 처리. 주소 정보를 정의하고 출발지와 도착지 주소를 확인하여 데이터 처리를 수행.
  • 네트워크 계층 : IP 주소와 같은 논리적인 주소를 정의. 라우터를 통해 정의한 IP 주소를 이해하고, 이를 이용해 최적의 경로를 찾아 패킷 전송.
  • 전송 계층 : 데이터들이 실제로 정상적으로 보내지는지 확인하는 역할. 패킷이 유실되거나 순서가 바뀔수도 있는데, 이를 바로잡는 역할함.
  • 세션 계층 : 양 끝 단의 프로세스가 연결을 성립하도록 도움. 작업을 마친 후에는 연결을 끊음.
  • 표현 계층 : 일종의 번역기 역할. MIME 인코딩, 암호화, 압축, 코드 변환과 같은 동작
  • 어플리케이션 계층 : 어플리케이션 프로세스를 정의, 서비스를 수행. 대표적으로 HTTP, FTP, SMTP가 있음.

1. Physical Layer

물리적 연결과 관련된 정보를 의미. 전기 신호를 잘 전달하는 것이 중요하다. 주요 장비로는 허브(Hub), 케이블(Cable), 리피터(Repeater), 트랜시버(Tranceiver) 등이 있다.

Hub

- 허브와 리피터 : 네트워크 통신 중재
- 케이블과 커넥터 : 케이블 본체를 구성
- 트랜시버 : 컴퓨터의 랜카드와 케이블을 연결하는 장비, 다양한 외부신호를 컴퓨터 내부 전기신호로 바꾸어줌

2. Data Link Layer

전기신호를 모아 알아볼 수 있는 데이터 형태로 처리. 출발지와 도착지 주소를 확인하고 수신자가 맞는지, 처리유무 등을 검사한 후에 데이터를 처리한다.

여러명과 동시에 통신하기 때문에 받는 사람이 데이터를 받을 수 있는지 확인하는 작업부터 한다. 이것을 플로우 컨트롤(flow control)이라고 한다.

Data link를 구성하는 요소는 네트워크 인터페이스 카드(Network Interface Card)와 스위치(Switch)가 있다.

1) 네트워크 인터페이스 카드(NIC, Network Interface Card)

랜카드, 네트워크 카드, 네트워크 인터페이스 컨트롤러, 네트워크 어댑터라고 불린다. 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장치다.

주요 역할은 크게 직렬화(Serialization, 전기적 신호와 데이터 신호 형태를 변환해주는 역할)와 MAC 주소(Media Access Control, NIC는 고유한 MAC 주소를 가지고 있다. 이 주소는 변경할 수 없도록 하드웨어에 고정되어 있다)이 있다.

2) 스위치(Switch)

여러 장비를 연결하고 통신하여 케이블을 한 곳으로 모아주는 역할을 하는 장비다. 주어진 MAC 주소를 보고 어디로 연결되고, 포트 위치를 확인하여 데이터 기반으로 통신할 때 포트를 적절히 필터링하고 정확한 포트로 포워딩 해준다.

3. Session Layer

소켓(Socket)

소켓은 네트워크에서 데이터를 송수신할 수 있도록, '네트워크 환경에서 클라이언트와 서버가 서로 연결할 수 있게 만들어진 연결부'를 의미한다.

네트워크 상에서 돌아가는 두 개의 프로세스 간 양방향 통신의 하나의 엔드포인트, 여기서 엔드포인트는 IP주소와 Port 의 조합을 의미한다.

소켓은 포트번호에 바인딩되어 데이터를 주고받는 전송 계층에서 어플리케이션을 식별할 수 있게 해준다. 어플리케이션 계층에 존재하는 프로세스들은 데이터를 주고 받기 위해서 Socket을 거쳐 전송 계층의 네트워크로 전달한다. 

이 때 누가 어디로 보낼지 정하는 IP주소와 포트 정보가 필요한다. 그래서 Socket은 다음과 같은 정보가 포함된다.

- 프로토콜
- 호스트 IP 주소 (Source IP)
- 호스트 Port 번호 (Source Port)
- 목적지 IP 주소 (Destination IP)
- 목적지 Port 번호 (Destination Port)

소켓은 프로세스 간의 양방향 통신을 목적으로 하기 떄문에 클라이언트와 서버의 구조를 가진다. 순조롭게 연결이 되면 서버는 같은 포트에 바인딩된 새로운 소켓을 형성하고, 기존의 연결 소켓에는 연결된 클라이언트의 요청을 처리한다. 따라서 같은 포트에 여러 소켓을 생성하여 사용할 수 있다.

4. Tranport Layer

IP 패킷의 한계는 비연결성(패킷을 받을 대상이 없거나 서비스가 불능 상태여도 전송), 비신뢰성(중간에 패킷이 손실되거나 순서가 바뀔 수 있음)의 특징을 갖는다.

TCP/IP 패킷

TCP 세그먼트에는 IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 포함한다.

TCP(Transmission Control Protocol)

TCP는 연결 지향, 데이터 전달 보증, 순서 보장, 신뢰성이라는 특징을 가지고 있다. 이 특징을 유지할 수 있는 3 way handshake를 살펴보면

1. 클라이언트는 서버에 접속을 요청하는 SYN 패킷(Synchronize)을 보낸다.
2. 서버는 SYN을 받고 클라이언트에게 요청을 수락한다는 ACK(Acknowledgment)와 SYN가 설정된 패킷을 발송한다.
3. 클라이언트가 서버에게 ACK를 보내면 이후부터 연결이 성립되어 데이터를 보낼 수 있다.
(현재 최적화가 이루어져 ACK와 함께 바로 데이터를 보내기도 함)

UDP(User Datagram Protocol)

TCP와 UDP 비교

IP프로토콜에 PORT, checksum 필드 정보만 추가된 단순 프로토콜이다. 신뢰성이 낮으나, 3 way handshake를 사용하지 않기 때문에 빠른 속도를 보장하낟. HTTP3에서는 UDP를 사용하여 커스터마이징이 가능하다는 장점도 있다. + 실시간 스트리밍에 자주 사용

5. Network Layer

IP(Internet Protocol) 주소에 패킷(Packet)이라는 통신 단위로 데이터를 전달한다. IP 패킷은 Pack과 bucket이 합쳐진 단어로 '소포'에 비유할 수 있다.

IP 패킷은 우체국 송장처럼 전송 데이터를 무사히 전송하기 위해서 출발지 IP, 목적지 IP와 같은 정보가 포함되어 있다.

그래서 패킷 단위로 전송하면 노드들은 목적지 IP로 도달하기 위해서 서로 데이터를 전달하기 때문에 복잡한 인터넷 망에서 정확한 목적지로 패킷 전송이 가능하다.

그러나 IP 프로토콜의 한계는 비연결성(패킷을 받을 대상이 없어도 전송), 비신뢰성(패킷 손실 및 순서바뀜)이라는 단점을 가지고 있다. 그러나 이는 Transport layer(전송계층)에서 TCP의 3 way handshake로 해결할 수 있다.

 

6. Application layer - HTTP


- 클라이언트 서버 구조(Request Response)
- 무상태 프로토콜, 비연결성(클라이언트의 상태를 보존하지 않으며, 서버 확장성 높음)
- 단순함, 확장 가능(무상태는 응답 서버를 쉽게 바꿀 수 있기 때문에 무한한 서버 증설이 가능)
- 비연결성의 한계를 HTTP 지속연결(Persistent Connections)로 문제를 해결. HTTP/2 HTTP/3에서 더 많은 최적화가 이루어짐

 

반응형
Comments