[백엔드 로드맵] 인터넷 기초1

Gyubster·2022년 1월 30일
0

백엔드 로드맵

목록 보기
1/11

백엔드에 대한 기초 지식을 점검해보고자 백엔드 로드맵을 참고하여 하나씩 점검을 해보려고한다. 로드맵에 나온 키워드를 중심으로 하나씩 정리를 할 예정이다.


Internet(인터넷)

인터넷은 현재 우리의 삶을 굉장히 편하게 만드는 요소 중 하나이다. 이를 이해하기 위해서는 TCP/IP에 대한 이야기를 먼저 할 필요가 있다.

TCP/IP는 전세계에서 가장 일상적으로 사용되는 프로토콜 세트이다. 컴퓨터 사이의 통신 표준 및 네트워크 라우팅 및 상호 연결에 대한 자세한 규칙을 제공하는 특징을 가진 TCP/IP는 ARPANET에서 시작이 되었고 미국방위통신청에서 컴퓨터간의 통신을 이로 규정하면서 최초로 모습을 나타냈다.

TCP/IP패킷 교환 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다. TCP는 IP위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해 준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 작동하기 때문에, 묶어서 TCP/IP로 불린다. 즉, IP주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며 TCP의 특성을 활용해 송수신자의 논리적 연결을 생성하여 신뢰성을 유지하겠다라는 것을 의미한다.

출처: 위키백과

이러한 TCP/IP 프로토콜을 기반으로 서로 데이터를 주고 받도록한 네트워크를 인터넷이라고 부른다. 네트워크는 컴퓨터간 케이블을 통해서 혹은 무선으로 연결될 수 있다. 하지만, 아래의 그림처럼 컴퓨터가 많아지게 된다면 매우 혼잡한 구성을 가지게된다.

따라서, 이를 해결하기 위해 라우터가 나왔다. 라우터는 특수한 소형 컴퓨터이다. 컴퓨터를 이 라우터에 연결하면 위의 복잡한 연결을 한번에 해결해준다. 라우터의 역할은 데이터를 원하는 컴퓨터에게 데이터를 전달해준다. 이러한 라우터는 라우터들끼리도 연결이 가능해 더 많은 컴퓨터와 연결을 가능하게 해준다.

하지만, 이러한 라우터도 물리적을 연결이 불가능한 거리에 있는 컴퓨터의 경우에는 연결이 불가능하다. 이를 해결하는 방법은 전화시설과 전화시설에서 네트워크의 데이터를 처리하는 모뎀을 이용하는 것이다.

마지막으로 데이터의 송수신을 위해서는 인터넷 서비스 제공업체인 ISP에 연결이 되어야한다. ISP는 다른 ISP와 연결해주는 역할을 한다.

정리하자면,"컴퓨터 A - 라우터 A - 모뎀 A - ISP A-ISP B - 모뎀B - 라우터B - 컴퓨터B" 의 구조로 인터넷을 통한 컴퓨터간의 소통이 일어난다.

이미지 출처:https://developer.mozilla.org/ko/docs/Learn/Common_questions/How_does_the_Internet_work


Additional Information

  • OSI 7 Layer란?
    위키백과에서의 OSI 7 Layer의 정의는 다음과 같다. OSI 7 Layer는 OSI 모형(Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 일반적으로 OSI 7계층 모형이라고 한다. 이 모델은 프로토콜을 기능별로 나눈 것이다. 각 계층은 하위 계층의 기능만을 이용하고, 상위 계층에게 기능을 제공한다.
    '프로토콜 스택' 혹은 '스택'은 이러한 계층들로 구성되는 프로토콜 시스템이 구현된 시스템을 가르키는데, 프로토콜 스택은 하드웨어나 소프트웨어 혹은 둘의 혼합으로 구현될 수 있다. 일반적으로 하위 계층들은 하드웨어로 상위 계층들은 소프트웨어로 구현된다.
    또한, 아래의 계층으로 갈수록, Protocol header가 추가되어 계층정보(TCP, IP, MAC 등)이 덧붙여진다. 이렇게 추가된 계층 정보를 파악하여 어떠한 계층에서 문제가 나타나는지 확인이 가능하다.

  • OSI 7 Layer 필수 계층이란?
    OSI 7 Layer 중에서 필수적으로 이해해야할 단계를 정리하고자한다.


    Application Layer(7 Layer) => Data + HTTP Header
    : 사용자가 UI를 통해서 접하는 응용프로그램 관련 계층이다. HTTP, FTP, DHCP, SMTP 등이 있고,사용자는 어떠한 방법으로든 이와 같은 프로토콜을 마주한다.


    Transport Layer(4 Layer) => Data + HTTP Header + TCP Header
    : 송수신자 간의 논리적인 연결을 담당하는 부분이다. 신뢰성 있는 연결을 위해, 송수신된 데이터가 얼마나 정확히 전송이 이루어졌는지를 확인한다.


    Network Layer(3 Layer) => Data + HTTP HEader + TCP Header + IP Header
    : 사용자 간의 데이터 전송이 필요한 경우, 엔드포인트 간의 경로 및 목적지를 찾아주는 역할을 한다. 이를 Routing(라우팅)이라고 한다. 대표적으로, IP, ICMP, ARP, RARP가 있다.


    DataLink Layer(2 Layer) => Data + HTTP Header + TCP Header + IP Header + Ethernetframe Header
    : 같은 네트워트 대역을 사용하는 단말에 대한 신뢰성 있는 전송을 보장한다. *MAC address를 활용하여 같은 구간내의 엔드포인트 혹은 스위칭 장비에 전달하여 1 Layer에 나타날수 있는 오류를 잡아낸다.


    Physical Layer(1 Layer)
    : 물리적 계층으로 Cable로 대표된다. 전기적 신호가 전송되는 구간이다.
  • MAC adress란?
    하드웨어 고유의 주소번호를 의미하며 물리적 주소로도 불린다. 실제로 통신과정에서 IP가 ARP(Address Resolution Process)를 통해서 MAC adress로 변형하여 데이터의 송수신을 하게된다. 혼동될 수 있기에 정리하자면, IP는 목적지 설정을 하는데 사용되고 MAC adress는 실제 데이터 통신을 위해서 사용된다.
  • ARP란?
    MAC Address를 알기 위해서 사용자의 커뮤터에서 ARP Request를 보낸다. 이 Request는 스위치를 타고 다른 컴퓨터에 Request로써 전달이 되는데 Request를 받은 컴퓨터에서 해당되는 MAC adress를 가지고 있으면 이에 대하여 ARP Reply를 보내게 된다. ARP Reply는 스위치를 타고 처음 Request를 보낸 컴퓨터로 도착함으로써 MAC Address를 알게 된다.
    정리하자면, ARP Request는 특정 IP 주소에 대한 MAC 주소를 요구한다. ARP Reply는 MAC 주소 정보를 *Unicast로 전송한다.

    추가로, RARP와 GARP가 존재한다. RARP는 Reverse Address Resolution Porotocol로 ARP와 반대로 MAC adress를 통해서 IP주소를 알아내는 프로토콜이다. GARP는 Gratious ARP로 송수신 IP가 동일한 ARP 요청이다. 자신의 존재를 알리는데 목적으로 사용된다. 따라서, IP 충돌을 감지하고, *ARP 테이블을 갱신하는데 사용된다.
  • Router와 Switch 차이점
    Router는 서로 다른 네트워크를 연결하는데 사용된다. Router의 역할은 패킷이 대상 컴퓨터에 도달하기위한 최상의 경로를 찾아준다. Switch는 여러 컴퓨터를 묶어 네트워크를 구성한다. Switch의 역할은 패킷을 요청한 컴퓨터에 전달해준다.
    Switch의 경우, 대규모 연결을 하는 경우 L2, L3, L4 등의 Switch들을 상황에 맞게 사용해야한다. L2는 OSI 7 Layer에서 2 Layer인 데이터 링크 계층의 MAC adress까지 이해하고 처리한다. L3는 OSI 7 Layer에서 3 Layer인 IP주소 까지 이해하고 처리한다. 따라서, 뒤의 숫자가 올라갈 수록 더욱 고등화된 처리 능력을 가진다. 스위치 허브에서 그룹을 분류하여 운영해야 되는 경우는 L3 이상의 기능을 지닌 고성능 스위치를 설치해야한다.
  • Unicast 란?
    Unicast는 1:1 통신 방식이다. 목적지 MAC adress/ 출발지 MAC adress 정보를 보내야 통신이 가능하다. LAN에서 이를 검증하게 되는데, 이때문에 네트워크에 연결된 컴퓨터들에게는 영향을 미치지 않는다.
    추가로, 1:Group 통신 방식인 Multicast와 LAN에 연결된 모든 네트워크 장비에게 통신하는 Broadcast가 있다.
  • ARP table 이란?
    IP 주소와 MAC adress를 일대일 매칭시켜 정리한 정보를 의미한다.
  • OSI 7 Layer를 통해 데이터 전달 과정
    간단하게 OSI 7 Layer 그림에서 위에서 아래로 데이터가 하나씩 추가된다고 생각하면된다. 예를 들어, 다른 컴퓨터에 데이터를 전송한다고 가정해보자.


    1. Data + HTTP Header(Application Layer)
    : HTTP에 의거하여 관련한 정보를 담는다.
    2. Data + HTTP Header + TCP Header(Transport Layer)
    : 관련한 정보를 수신할때마다 신뢰성 체크를 한다.(3way handshake를 이용한다.) 또한, TCP 관련 정보를 담는다.
    3. Data + HTTP Header + TCP Header+ IP Header(Network Layer)
    : 출발지와 목적지 정보를 담은 IP 정보를 담는다.
    4.Data + HTTP Header + TCP Header+ IP Header + Ethernet Frame Header
    : MAC address 및 오류 검출 정보를 담는다.


    위의 과정을 통해서, 데이터가 전달되게 된다.
  • 패킷 교환 방식이란?
    패킷 교환은 패킷이라는 비교적 작은 데이터 단위가 각 패킷에 포함된 대상 주소를 기반으로 네트워크를 통해서 라우팅 되는 네트워크 유형을 말한다. 다양한 네트워크 장치를 통한 빠르고 효율적인 전송을 위햇 데이터를 적절한 크기의 조각이나 블록으로 분해하는 디지털 네트워크 전송 프로세스이고, 컴퓨터간의 파일 이동을 하는데 적용된다. 이러한 패킷 교환은 데이터 그램 방식, 가상 회로 방식으로 나눠진다.
    데이터 그램 방식(비연결 지향 패킷 교환)은 각 패킷에 완전한 주소 지정 또는 라우팅 정보를 포함하여 개별 라우팅되는 방식을 이야기한다. 쉽게 이야기하자면, 각 패킷들의 최종 목적지는 정해져 있고 노드를 이동할때 마다 경로를 찾는 것이다. 하지만 이로 인해서 네트워크 노드들의 상태에 따라서 패킷이 잘못 전달 혹은 전달 경로의 변화가 일어 날 수 있다. 가상 회로 방식(연결 지향 패킷 교환)은 데이터 그램 방식과는 경로까지 모두 정의를 마치고 순차적으로 목적지로 패킷을 보내는 방식이다.

    이미지 출처: 위키백과
  • 패킷 교환의 장점?
    이러한 패킷 교환 방식은 회선 교환 방식과 비교했을 때 네트워크 효율성, 신뢰성, 탄력성, 비용에서 장점을 가지고 있다.
    네트워크 효율성은 전용 통신 회선이 가지고 있는 문제점인 통신을 마칠때까지 해당 네트워크가 사용 불가능하다라는 점을 패킷 교환 방식은 자체 경로를 패킷의 헤더에 포함시켜 전용회선없이 자체 경로를 찾을 수 있다.
    신뢰성은 패킷 교환의 경우, 누락되는 패킷이 무엇인지 쉽게 감지하고 누락된 패킷에 대한 재전송을 요청한다. 회선 교환 방식의 경우, 손실된 데이터를 재전송하는 메커니즘이 없다.
    탄력성은 패킷 교환의 경우, 가장 효율적인 경로를 따라 트래픽을 전송하는 라우터의 도움을받아 목적지로 가는 길을 찾는다. 하지만, 회로 교환 네트워크는 링크의 변동이 생기면 수동 개입을 통해서 해결해야한다.
    비용은 패킷 교환의 경우, 데이터가 사용하는 동일한 네트워크를 통해 다양한 파일을 전송 할 수있다. 따라서, 별도의 네트워크를 추가적으로 설치할 필요가 없다는 점과 높은 수준의 확장성을 제공하기 때문에 비용효율적으로 확장이 가능하다.
  • TCP란?
    TCP(Transmission Control Protocol)는 IP 기반의 환경에 자주 쓰여 TCP/IP라고 한다. IP는 패킷들의 관계를 이해하지 못하고 그저 목적지를 찾아서 가는데 중점인데, TCP는 양쪽의 endpoint간 통신 준비, 데이터 전송 여부, 데이터 변질 여부 등 다양한 부분을 점검한다. 이러한 점검은 TCP Header에 관련한 정보들을 넣어 이뤄진다. 이러한 정보들은 흐름 및 혼잡을 제어하는 요소들도 포함한다. 아래는 TCP Header의 구성이다. 추가적으로, TCP는 IP 정보를 통해 목적지를 확인하고 Port에 대한 정보를 확인하고 해당 Port를 통해 연결된다.


    TCP의 흐름 제어는 Windowsize(수신자가 결정하는 한번에 받고 보낼수 있는 데이터양), Acknowledgedment Number(지금까지 받은 데이터 양을 확인하여 송신자에게 전송하는 데이터), Sequence Number(데이터의 순서 번호 - 5까지 받았고 그러니 이제부터 그 다음인 6을 전송해)를 통해서 이루어진다. TCP의 혼잡제어는 다양한 방법(AIMD, Slow Start, Fast Retransmit, Fast Recovery)을 통해서 이뤄진다. AIMD(Additive Increase/Multicative Decrease)는 전송에 성공하면 Windowsize를 1씩 증가시키고 전송에 실패하면 Windowsize를 절반으로 줄인다. 최적환된 속도로 통신하기까지 오래걸린다는 단점을 가지고 있다. Slow Start는 Windowsize를 2배씩 증가시키고 혼잡이 감지되면 1로 줄인다. Treshold(임계점, sstresh로도 불림-slow start 한정)에 도달하면 Windowsize를 1씩 증가시키는 방식으로 Slow Start를 제어한다. Fast Retransmit은 송신측에서 설정한 타임아웃 전까지 누락된 패킷을 재전송하는 방법이다. 여기서 누락된 패킷의 재전송은 누락되기전 ACK Flag를 3번 전송받으면 재전송이 시작된다.(이를 3 ACK Duplciated라고 한다.)보내게 타임 아웃이 되면 Congestion(혼잡)이 일어나는 것으로 간주하고 혼잡 회피를한다. Fast Recovery는 Congetstion을 한번 경험하면 AIMD 방식으로 작동하는 것을 의미한다.
    이미지출처:위키백과
  • TCP의 작동 방법
    TCP는 3-way handshake를 이용해 신뢰성있는 연결을 유지한채 데이터를 송수신한다. 이는 TCP Header 내부에 있는 Flag(SYN, SYN/ACK, ACK)를 통해서 가능하다.
  1. 송신자가 수신자에게 SYN을 날려 통신 가능 여부를 확인한다. 이와 관련된 Port는 반드시 열려 있어야한다.
  2. 수신자가 송신자에게 SYN을 받고 SYC/ACK를 날려 통신 준비가 완료되었음을 전달한다.
  3. 송신자가 ACK를 날려 전송을 시작함을 전달한다.

  • TCP 혼잡 제어 정책
    TCP Tahoe
    : 설정한 임계점까지 Slow start 방식으로 Windowsize를 조절하고, 설정한 임계점 이후부터 AIMD 방식으로 Windowsize를 조절하는 방법이다. 이후,Timeout이 발생하게 되면(Congestion 발생시) Windowsize가 1로 줄어드는 것이 특징이다. 따라서, Congestion 이후에 Windowsize를 늘리는데 많은 시간이 든다.

    TCP Reno
    : 기본적인 세팅은 TCP Tahoe와 같다. 하지만, 3ACK Duplicated 상황에서 Windowsize를 1로 줄이는 것이 아니고 절반으로 줄이고 선형적으로 Windowsize를 증가시킨다. 그리고 절반으로 줄어든 Windowsize를 임계점으로 재설정한다. 이후, Timeout이 발생하게 되면(Congestion 발생시) Windowsize를 1로 줄인다.

    현재는 CUBIC, RED 등과 같은 다양한 방법도 사용한다고 한다.
  • UDP란?
    : User Datagram Protocol으로 데이터를 데이터그램 단위로 처리하는 프로토콜을 의미한다. 비연결형 프로토콜(연결을 설정하고 해제하는 과정이 존재하지 않음.)로 연결을 위해 할당되는 논리적 경로가 없기 때문에 각 패킷이 랜덤한 경로로 처리된다. 이로 인해 신뢰성이 낮지만, TCP 보다 빠른 속도로 데이터가 전달된다. 따라서, 신뢰성보다는 연속성이 중요한 스트리밍과 같은 곳에 사용된다.
    TCP와 UDP를 비교하자면 아래의 그림과 같다.
profile
공부하는 예비 개발자

0개의 댓글