반응형
반응형

📝 OSI 7 계층

서로 다른 컴퓨터의 통신을 위해 처리해야할 작업을 순차적으로 7단계로 처리하는 과정

 

📝 OSI 1 계층

1계층은 물리계층으로 보낼 데이터 정보(0 또는 1로 되어있는 디지털 신호)를 아날로그 신호(전기적 신호)로 바꾸고 그와 반대 역할을 수행합니다 해당 장치로는 통신 케이블, 허브 등이 있습니다.

 

📝 OSI  2 계층

2계층은 데이터링크계층으로 여러 컴퓨터가 데이터를 보낼 때 데이터가 꼬일 수 있기 때문에  보내는 데이터에 특정 비트열을 붙여서 어디서부터 어디까지 읽어야하는지 정해준다 → 프레이밍 

이 계층에서 전송되는 데이터 단위를 프레임이라고 한다.

 

예) "안녕하세요"를 보낼 경우 "안녕하세요"(프레임)까지 읽어야하는데 "안ㄴ"(프레임)까지만 읽는 경우 문제가 생기기 때문에 이렇게 보낸다

 

또한 같은 네트워내에 있는 MAC주소 기반으로 데이터를 보내는 역할도 합니다. 해당 장치로는 스위치와 브리지가 존재합니다.

 

📝 OSI 3 계층

3계층은 네트워크계층으로 받은 데이터를 목적지(IP)까지 가장 안전하고 빠르게 전달하는 기능이다. 2계층에서는 MAC주소 기반으로 같은 네트워크 내에 보내지만 서로 다른 네트워크에 대해서는 3계층을 이용한다. 전송 데이터 단위는 Packet이며 Packet단위로 전달한다 → 해당 장치로는 라우터가 있습니다. (공유기도 3계층 역할을 한다)

 

개인적인 생각으로 2계층으로 처리할 수 있으면 2계층으로 안 되면 3계층으로 처리하는 것 같다.

 

📝 OSI 4 계층

4계층은 전송계층으로 3계층으로 받은 데이터의 데이터의 무결성을 위해 오류검출(데이터 누락시 재전송 요청)및 복구, 흐름 제어와 중복검사 등을 수행한다 데이터 전송 단위는 Segment이다

대표적 프로토콜로 TCP와 UDP가 있다 → 운영체제의 커널에 소프트웨어적으로 구현되어 있다

 

  • TCP
    • 연결을 설정하고, 데이터의 정확한 순서와 정합성을 보장하며, 수신 확인(ACK) 및 재전송을 관리합니다 [웹 브라우징(HTTP/HTTPS)]
  • UDP
    • 빠른 전송이 필요한 경우 사용됩니다. 연결 설정 없이 데이터를 전송하며, 순서 보장이나 수신 확인이 필요 없고, 속도가 중요한 경우에 적합합니다 [실시간 스트리밍, 온라인 게임]

 

📝 OSI 5 계층

5계층은 세션계층으로 세션 계층으로, 통신 세션을 설정, 유지, 종료하는 역할을 담당합니다.

 

📝 OSI 6 계층

6계층은 표현계층으로 송수신자가 공통으로 이해 할 수 있도록 정보의 데이터 표현방식을 바꾸는 기능을 담당한다

데이터의 보안과 효율적인 전송을 위해 암호화와 압축을 수행하여 세션 계층 데이터를 암복호화(인코딩, 디코딩) 또는 압축하는 역할JPEG, MP3 등...

 

📝 OSI 7 계층

7계층은 응용계층으로 사용자가 네트워크 자원(보낸 데이터)에 접근하는 방법을 제공한다.
HTTP를 통해 해당 데이터를 요청하고 7계층은 사용자가 볼 수 있는 유일 계층으로 모든 네트워크 활동 기반 인터페이스를 제공하는데 사용자가 이용하는 응용 프로그램들이 이에 포함된다고 생각하면 된다. (HTTP, HTTPS, FTP, SSH, 등)

 

예를 들면 HTTP의 경우 GET방식, Host, User-Agent정보 등이 포함되고 SSH의 경우 ssh 정보, SMTP의 경우 이메일 정보, FTP의 경우 user, password 정보가 포함된다.

 

📝 동작 순서

출발지에서 각 계층에 따른 역할을 붙히고 목적지에서는 그걸 해석하는 작업을 가진다

위에 그림과 같이 7 계층 → 6 계층 .... 1계층 → 1계층 → ... 7계층 보내는 쪽에서는 점점 데이터가 붙어서 전달하고 받는 쪽에서는 각각의 역할을 맡은 레이어별로 해당 부분의 데이터를 빼가면서 해석하며 전해준다

 

 

📝 TCP / IP 모델

현재는 OSI 7계층이 아니라 TCP / IP 모델을 쓴다OSI 7 layer가 시장 점유율에서 패배 (이론적으로는 OSI 7 layer로 설명) 5 ~ 7 계층을 TCP / IP 모델에서는 하나의 응용 계층으로 묶는 점이 다르다

 

📝 TCP/IP 1 계층

링크계층으로 OSI 1계층처럼 패킷을 하드웨어로 보낸다

 

📝 TCP/IP 2 계층

네트워크 계층으로 OSI 3계층처럼 수신지에 MAC 주소및 목적지 포트를 붙여서 전달한다

 

📝 TCP/IP 3 계층

트랜스포트 계층으로 OSI 4계층처럼 TCP프로토콜 기반으로 데이터를 패킷화 시켜서 보낸다

 

📝 TCP/IP 4 계층

애플리케이션 계층으로 OSI 5 ~ 7 계층에 해당하는 부분으로 어떻게 데이터를 요청할 지 등을 정한다 → HTTP , Telnet 등...

 

📝 TCP

연결지향이며 자체적으로 패킷을 이용해서 정보를 전달하므로 패킷은 규약이 있다 TCP는 전달받은 패킷을 재조립하고, 패킷에 손상이 있거나 손실된 패킷이 있다면 재전송을 요청한다.

 

📝 TCP/ IP

TCP방식으로 해당 IP에 데이터를 보내는 방식

 

📝 UDP

비연결지향이며 오류를 처리하거나 순서를 재조합시켜주는 기능을 가지고 있지 않다

단순히 데이타를 받거나 던져주기만 하는 프로토콜이다

UDP는 특히 실시간 멀티미디어 정보를 처리하기 위해서 주로 사용한다

 

📝 페이로드 (Payload)

HTTP 요청을 보낼 때 보내는 데이터를 Payload라고 합니다

 

📝 패킷 (Packet)

데이터를 일정한 크기로 자른 단위로 인터넷에서 정보를 전달하는 단위이다

나누어진 패킷이 순서대로 도착한다는 보장이 없으므로 규칙이 필요하다

 

📝 트래픽 (Traffic)

인터넷에서 송수신되는 데이터의 양

 

📝 라우팅 (Routing)

통신 데이터를 보낼 때 최적의 경로를 선택하는 과정

 

 

🔗 참고 및 출처

https://velog.io/@beberiche/TCPIP-OSI-7-Layer-%EC%97%90-%EB%8C%80%ED%95%B4-%EB%A7%90%EC%94%80%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94

반응형
반응형

📝로드밸런싱

근래들어 L7을 많이 이용하고 이전에 많이 사용하던 장치는 L4였습니다. (L7, L4는 기계 장치입니다.)

서버 부하 분산을 위해 로드밸런서를 이용합니다.

물리적 프로세서 간에 작업을 스케줄링 해 놀고 있는 장비에 분산시켜 서버에 가해지는 부하(로드)를 분산(밸런싱)해주는 장치 또는 기술을 말합니다.

 

📝NAT(Network Address Translation)

내부 네트워크의 사설 IP 주소를 외부 네트워크에서 사용할 수 있는 공인 IP 주소로 변환해줍니다. 공유기나 라우터 같은데에서 사용되는 기술입니다.

 

📝NAT 테이블

내부 네트워크에서 요청 트래픽이 어디서 왔고 어디로 가야하는지를 기록합니다. 기본적으로 자동적으로 NAT 테이블은 생성됩니다. 예를 들면 내부 로컬 PC에서 어떤 사이트를 접속하면 그 사이트로 요청을 보낼테고 그 응답을 공인 IP를 거쳐서 로컬 PC로 보내야하는데 여러대일 경우 어디로 가야할지 모르기 때문에 그걸 도와주는 역할을 한다.

 

📝NAT (가상화)

호스트 PC인 내 로컬 PC가 게이트웨이 역할을 하며 내 PC를 통해서 데이터가 나가기 때문에 내 로컬 PC가 공유기처럼 되며 직접 사설 IP를 할당해줘서 실제 공유기가 내려주는 사설 IP랑 다른 대역대를 가진다. (로컬 PC 사설 IP 대역이 192.168.1.0/24일 경우 이거랑 다른 대역대를 가지게 된다.)

 

 

 

📝브리지 (가상화)

공유기가 주는 사설 IP를 그대로 할당 받는다. 그래서 로컬 네트워크에 포함된 형태이며 직접 통신합니다. (사설 IP 대역이 192.168.1.0/24일 경우 이 내에서 받게 된다.)

 

    

 

📝IP공유기

최대 255개의 장치까지 IP 주소를 할당해줄 수 있습니다. 또한 무선기능도 지원해줍니다.

공유기를 보면 색이 다른 곳이 있는데 모뎀에서 받은 메인 랜포트를 꼽는 곳입니다.

다른 포트들에 컴퓨터와 같은 장치들과 랜선을 연결하면 IP주소(사설IP)가 분배되어 인터넷 사용이 가능해집니다.

하지만 일반적인 가정에서 포트가 4개이기 때문에 더 많은 랜포트를 이용하기위해서 스위치허브가 필요합니다.

 

 

📝모뎀

통신사에서 주는 대역폭을 받아오는 장치입니다.

이걸 통해 공유기로 여러개의 컴퓨터에 인터넷이 들어오게 할 수 있습니다.

공인IP를 받는 역할 (모뎀 + 공유기 형태도 있다.)

 

 

🔗 참고 및 출처

https://kejdev.github.io/etc/2024/03/11/NAT%28NetworkAddressTranslation%29.html

 

반응형
반응형

📝이더넷 어뎁터 

이더넷 어댑터는 유선 연결을 통해 컴퓨터를 인터넷이나 로컬 네트워크에 연결해줍니다.

이더넷 어뎁터

📝게이트웨이 (라우터)

네트워크(segment)에서 다른 네트워크로 이동하기 위하여 거쳐야 하는 지점입니다.

게이트웨이(Gateway)는 서로 다른 네트워크(이기종 네트워크)를 연결해줍니다.

모뎀은 게이트웨이 역할인 것입니다 그리고 게이트웨이는 남는 사설IP중 하나를 쓰게 됩니다.

 

IP 주소와 기본 게이트웨이 주소를 비교해봅시다.

119.197.66이 공통된 것을 볼 수 있습니다. 다른 점은 맨 뒤의 숫자가 다른 것을 볼 수 있습니다.
즉. PC와 게이트웨이 사이에 설정된 네트워크 ID가 동일하다고 볼 수 있습니다.

동일한 네트워크 ID를 공유하는 장치들의 공간 LAN이라고합니다.

이렇게 동일한 네트워크 ID라는 LAN이란 공간은 같은 모뎀(일반적으로 공유기를 의미)을 사용한다는 의미입니다.

 

네트워크 간 데이터를 전송할 때 거치는 장소로 게이트웨이가 존재하지 않으면 데이터가 외부로 나갈 수 없다(즉 인터넷 사용 못함) → 공유기로부터 데이터가 들어오고 나가기 때문이다.

 

📝랜카드

네트워크랑 연결해주는 유선 인터페이스를 지원하고 무선연결도 지원해준다. 통신하기 위한 고유한 맥주소가 저장되어있다.

 

 

📝MAC 주소

통신기기 하드웨어에 부과되는 고유한 물리적 주소 48bit로 구성 (00:0a:... 콜론6개로 구성)

데이터 링크 계층에서 사용되며 로컬 네트워크에서 장치 식별과 데이터 전송을 담당합니다.

 

📝네트워크 주소

192.168.0.177, 192.168.0.43두 아이피 주소는 동일한 네트워크 주소를 가졌다고 볼 수 있다. 192.16.0.X

 

📝브로드캐스트 주소

해당 네트워크 내부의 모든 기기들에게 한번에 데이터를 전송하기 위한 용도로 사용되는 전용 IP 주소로 서브넷 대역대의 255로 기본적으로 할당됩니다

 

브로드 캐스트 서버로 메세지 보내기

 

import socket

# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    # UDP 소켓 생성
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # 브로드캐스트를 허용하도록 설정
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

    # 브로드캐스트 주소와 포트 번호 설정
    broadcast_address = ('172.30.1.255', 12345)

    # 브로드캐스트 메시지 전송
    message = b'Hello, Network!'
    sock.sendto(message, broadcast_address)

    # 소켓 닫기
    sock.close()

 

클라이언트 (브로드캐스트 구독)

import socket


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    # 수신 소켓 생성 (UDP)
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # 모든 네트워크 인터페이스에서 수신하기 위해 빈 문자열로 바인딩
    sock.bind(('', 12345))  # 포트는 메시지를 보낼 때 사용한 포트와 동일해야 합니다.

    print("브로드캐스트 메시지 수신 대기 중...")

    while True:
        # 메시지를 수신
        data, addr = sock.recvfrom(1024)  # 최대 1024 바이트의 데이터 수신
        print(f"Received message: {data.decode()} from {addr}")

위 코드는 브로드 캐스트 주소를 이용해 해당 주소로 요청을 보내면 그걸 구독하고 있는 클라이언트가 메시지를 받는 예제입니다.

 

 

🔗 참고 및 출처

https://take-a-step-first.tistory.com/118

반응형
반응형

📝DMZ

DMZ(비무장 지대)는 외부 네트워크와 내부 네트워크 사이의 중립 구역입니다. 외부에서 접근해야 하는 서버(예: 웹 서버, 메일 서버)를 DMZ에 배치하고, 내부 네트워크를 보호합니다. 방화벽은 외부에서 DMZ로의 트래픽을 허용하고, DMZ에서 내부 네트워크로의 트래픽을 제한하는 역할을 합니다.

 

📝방화벽

네트워크간의 트래픽을 감시하고 제어하는 역할로 허용된 트래픽만 내부 트래픽으로 들어오거나 나갈 수 있도록 할 수 있습니다. (인바운드, 아웃바운드)

 

📝인바운드 규칙

외부에서 내부 네트워크로 들어오는 트래픽을 이야기합니다. 예를 들면 443인 HTTPS 포트는 허용하지만 FTP 포트 21은 차단할 수 있습니다. (기본적으로 모든 것 차단)

 

📝아웃바운드 규칙

내부 네트워크에서 외부 네트워크로 나가는 트래픽을 이야기합니다. 예를 들면 필요한 특정 사이트만 접근 가능하도록 허용(데이터 요청)하고 그 외에는 요청이 안 되어서 못 쓰게 만드는 등 사용이 가능합니다. (기본적으로 모든 것 허용)

 

📝포트포워딩

외부에서 내부 네트워크로 들어오는 트래픽을 특정 장치로 전달하는 명시적인 규칙을 설정하는 것입니다. 예를 들면 공인 IP의 80번 포트를 요청하면 어떤 사설 IP의 3000번 포트로 전달하게 된다 등에 사용됩니다.

 

 

🔗 참고 및 출처

https://velog.io/@ektmf4411/%EB%B0%A9%ED%99%94%EB%B2%BD-DMZ

반응형