읽기 전

  • 불필요한 코드나 잘못 작성된 내용에 대한 지적은 언제나 환영합니다.
  • 개인적으로 사용해보면서 배운 점을 정리한 글입니다.
  • 기술면접만을 준비하기보다 비전공자 입장에서 Network의 기본적인 내용만 짚기 위해 작성되었습니다.

IP

  • IP(Internet Protocol) : 네트워크의 어떤 PC에서 다른 PC로 데이터를 전송하는 역할
  • 목적지가 다른 네트워크에 있다면 경로 상의 라우터가 IP 헤더를 참조해 IP 패킷을 전송하는 라우팅을 수행

Technical_Interview_Network_004_001.png

  • IP 주소 : TCP/IP에서 통신 상대 호스트를 식별하기 위한 식별 정보(호스트의 인터페이스에 할당된 주소)
  • 유니캐스트 : 한 개의 호스트로 데이터를 전송
  • 브로드캐스트 : 같은 네트워크 상의 모든 호스트에게 동일한 데이터를 전송
    • 브로드캐스트의 IP범위 : 255.255.255.255
  • 멀티캐스트 : 동일 애플리케이션이 동작하는 특정 그룹의 호스트들에 데이터를 전송
    • 멀티캐스트 그룹의 호스트가 동일 네트워크에 존재한다고 확언할 수는 없다.
    • 멀티캐스트 IP : 224.0.0.0 ~ 239.255.255.255
  • 서브넷(subnet) : 작은 네트워크
    • 건물의 a동에 해당하는 주소가 서브넷(네트워크부 or 네트워크 주소)
    • a동의 b호에 해당하는 주소가 네트워크 인터페이스에 할당된 호스트 주소(호스트부 or 호스트 주소)
    • 네트워크부와 호스트부를 합해 IP주소를 만든다.
  • IP 주소의 표기 방법/구조

Technical_Interview_Network_004_002.png

  • 서브넷 마스크 : 네트워크부와 호스트부의 경계가 고정이 아닌 가변적임에 따라 어디까지가 네트워크부인지 명시하는 마스크

  • 공인 IP 주소(Public IP) : 인터넷에서 사용하는 IP주소로 인터넷 통신을 위해 반드시 필요

  • 사설 IP 주소(Private IP) : 공인 IP 주소범위가 부족함에 따라 대표 공인 IP 주소를 두고 산하의 네트워크에 사설 IP 주소를 배포하여 IP 주소 부족 문제 해결

    • 10.0.0.0 ~ 10.255.255.255
    • 192.16.0.0 ~ 172.31.255.255
    • 192.168.0.0 ~ 192.168.255.255
    • 사설 IP 주소는 사설 네트워크에서는 자유로이 사용가능하며 다른 네트워크의 사설 주소가 겹치더라도 통신은 공인 IP 주소를 거쳐서 들어오기 때문에 문제가 없다.
  • NAT(Network Address Translation) : 인터넷은 공인 IP 주소만 사용하므로 사설 네트워크에서 인터넷으로 통신하기 위해서는 공인 IP 주소로 바꿔야 하는데 그 과정을 말한다.

    1. 사설 네트워크에서 인터넷으로 요청 전송 시 출발지 IP 주소 변환
    2. 라우터는 다시 되돌리기 위해 변환한 주소의 쌍을 NAT 테이블에 저장
    3. 요청에 대한 응답이 라우터로 돌아오면 목적지 IP 주소를 NAT 테이블로 참조하여 변환

Technical_Interview_Network_004_003.png

  • NAPT(Network Address Port Tanslation) : 복수의 사설 주소를 하나의 글로벌 주소에 대응
  • ICMP(Internet Control Message Protocol) : IP가 통신이 정상적으로 이루어지는지 확인하지 않기 때문에 그 기능을 수행하는 프로토콜
    • 에러 리포트 : 어떤 사유로 IP 패킷이 폐기되었다면 폐기한 기기가 ICMP를 이용해 폐기한 IP 패킷의 출발지로 에러 리포트(도달불능 메시지) 전송
    • 진단 기능 : IP의 엔드투엔드 통신이 가능한지 확인(ex. Ping command)

Technical_Interview_Network_004_004.png

  • ARP : 인터페이스를 식별하기 위한 MAC 주소를 대응

    • 이더넷 인터페이스에서 IP 패킷 전송 시 이더넷 헤더를 첨부하는데 목적지 MAC 주소를 지정해야 한다.
    • 목적지 IP 주소에 대응하는 MAC 주소를 구하기 위해 ARP 사용, 이 과정을 주소 해석이라 한다.
    1. ARP 요청하여 IP 주소에 대응하는 MAC 주소 질의
    2. 질의받은 IP 주소를 가진 호스트가 ARP 응답으로 MAC 주소 회신
    3. 주소 해석한 IP 주소와 MAC 주소 쌍을 ARP 캐시에 저장
    4. 이후 이더넷 헤더에 목적지 MAC 주소, 출발지 MAC 주소를 적어서(캡슐화) 전송

Technical_Interview_Network_004_005.png

포트

  • 호스트에서 동작하는 애플리케이션에 데이터를 배분하기 위해서는 각각의 애플리케이션 식별 정보가 필요하다.
  • 포트 번호 : TCP/IP의 애플리케이션을 식별하는 번호로 TCP/UDP 헤더에 지정
    • 총 16비트로 0~65535까지 지정 가능
    • 웰노운 포트(well-known port) : 사전에 정해진 포트 번호
      • 범위는 0 ~ 1023까지로 서버 애플리케이션 용으로 예약된 포트 번호이다.
      • 주요 웰노운 포트 번호 : HTTP(80), HTTPS(443), SMTP(25), FTP(20/21), DHCP(67/68)
    • 등록된 포트(registered port) : 웰노운 포트를 제외하고 사전에 지정된 자주 이용되는 애플리케이션의 서버쪽 포트 번호
      • 범위는 1024~44151이다.
    • 동적/사설 포트 : 클라이언트 애플리케이션을 식별하기 위한 포트 번호
      • 요청마다 매번 바꿀 수 있으며 클라이언트가 통신할 때 동적으로 할당
      • 범위는 44152~65535이다.

읽기 전

  • 불필요한 코드나 잘못 작성된 내용에 대한 지적은 언제나 환영합니다.
  • 개인적으로 사용해보면서 배운 점을 정리한 글입니다.
  • 기술면접만을 준비하기보다 비전공자 입장에서 Network의 기본적인 내용만 짚기 위해 작성되었습니다.

TCP

  • TCP : 신뢰성이 있는 애플리케이션 간의 데이터 전송을 위한 프로토콜
  • TCP에 의한 데이터 전송 절차
    1. TCP 커넥션 범위 : 3way-handshake
    2. 애플리케이션 간 데이터 송수신 : 세그먼트 분할, 혼잡 제어
    3. TCP 커넥션 끊기 : 4-way handshake
  • 플로우 제어 : 데이터 도착 상태 확인하여 재전송을 결정하거나 혼잡 시 속도를 제한하는 등의 과정
  • TCP 헤더

Technical_Interview_Network_003_001.png

  • ACK : 데이터를 바르게 수신했음을 전달

  • 시퀸스 번호 : 패킷의 맨 앞 위치 데이터가 송신 데이터의 몇 번째 바이트에 해당하는지 안내

    • 보통 시퀸스 번호의 초기값은 임의의 난수이다.(매번 1로 시작되면 보안에 취약하므로)
  • ACK 번호 : 데이터가 몇 바이트까지 수신 측에 도착했는지 송신측에 안내

TCP 커넥션 맺기

  • 3way-handshake : 데이터를 전송하기 전에 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정
  1. 접속 동작 시 송신 측에서 시퀸스 번호 초기값을 수신측에 통지
  2. 시퀸스 번호로부터 ACK 번호 산출하여 송신 측에 전송하며 수신측에서 송신측에 보내는 데이터에 대한 시퀸스 번호 초기값도 함께 전송
    • 1번 과정이 정상동작함을 알리기 위해 ACK 전송
  3. 수신측으로부터 받은 시퀸스 번호에서 ACK 번호 산출해서 서버에 보내면 완료
  • 타임아웃 값 : 네트워크 혼잡 등 미상의 사유로 ACK가 돌아오지 않을 때 정해두는 임계값, 초과 시 재전송 등 회복동작 수행

Technical_Interview_Network_003_002.png

애플리케이션 간 데이터 송수신

  • MSS(Maximum Segment Size) : 전송하고자 하는 데이터가 너무 클 때 TCP가 일정 크기로 데이터를 분할. MSS는 그 단위이다.
    • 표준 크기는 1460바이트
  • MTU(Maximum Transmission Unit) : 한 패킷으로 운반할 수 있는 최대 크기
    • 이더넷에서는 보통 1500바이트이다.

Technical_Interview_Network_003_003.png

  • 데이터의 전송

Technical_Interview_Network_003_004.png

  • MSS에 맞춰 분할된 데이터를 전송할 때 수신 측은 송신 측에 어디까지 받았는지 확인하는 ACK 전송
  • stop and wait(ping-pong 방식) : 매번 전송한 패킷에 대한 확인 응답을 받아야 다음 패킷 전송
  • 윈도우 제어 방식(Sliding Window) : 한개의 패킷만을 전송하면 시간 효율이 좋지 않아 복수의 패킷을 전송하며 수신확인을 하는 방식

Technical_Interview_Network_003_005.png

  • 윈도우 사이즈 : 수신 가능한 데이터의 최댓값
    • 일반적으로 수신 측의 버퍼 메모리의 크기가 된다.(TCP 헤더에 명시)

Technical_Interview_Network_003_006.png

오류 제어

  • 오류 검출과 재전송을 수행한다.
  • ARQ(Automatic Repeat Request) 기법을 사용해 프레임이 손상되었거나 손실되었을 경우 재전송을 통해 오류를 복구
  • Stop and Wait ARQ
    • 1개의 프레임 송신, 수신측에서 오류 발생 유무에 따라 ACK이나 NAK을 전송
    • NAK를 받거나 ACK 분실로 타임아웃이 발생하면 송신측이 데이터 재전송
  • Go Back n ARQ(슬라이딩 윈도우)
    • 프레임이 손상되거나 분실되어 NAK이나 타임아웃이 발생한 경우 정상 수신이 확인된 마지막 프레임 이후로 모든 프레임을 재전송
      • 수신측이 데이터 1을 받고 3을 받은 경우 2가 분실되었으므로 3을 폐기하고 NAK 2를 전송하여 2부터 전부 재전송 요청
      • 제대로 수신하여 ACK를 보냈음에도 ACK가 분실될 경우 송신 측은 마지막 ACK된 데이터부터 재전송
    • 오류 검출 시 연속적으로 프레임을 전송하기 때문에 전송된 모든 프레임의 복사본을 가지고 있어야 함
    • ACK : 다음 프레임 전송
    • NAK : 손상된 프레임 번호 반환
  • SR(Selective-Reject) ARQ
    • GBnARQ의 모든 프레임 재전송하는 비효율을 개선한 기법
    • 손상되거나 손실된 프레임만 재전송한다.
    • 따라서 수신측이 데이터 재정렬을 수행해야 하며 별도 버퍼가 필요하는 등 구조가 복잡

혼잡 제어

  • 라우터에 데이터가 몰려 데이터를 처리할 수 없는 경우 오류를 감지한 호스트들이 패킷을 재전송함에 따라 혼잡이 더욱 악화되어 오버플로우나 데이터 손실이 발생할 수 있음
  • 혼잡 제어의 목적 : 네트워크의 혼잡을 피하기 위해 송신측에 보내는 데이터의 속도 제한
  • 혼잡 회피(Congestion Avoidance)
    • 윈도우의 크기가 임계값에 도달하면 데이터 손실 확률이 증가
    • 데이터 손실 회피를 위해 윈도우 크기를 선형적으로 1씩 증가
    • 수신측으로부터 ACK를 수신받지 못한 경우
      1. 타임아웃 발생 : 네트워크 혼잡 발생 인식
      2. 혼잡상태 인식 시 윈도우의 크기를 1로 감소
      3. 임계값을 현재 윈도우 크기의 절반으로 감소
  • 빠른 회복(Fast Recovery)
    • 혼잡한 상태가 감지되면 윈도우 크기를 1로 줄이지 않고 절반으로 줄인 뒤 선형 증가
    • 혼잡회피와 빠른 회복 정책이 적용되면 AIMD 방식이 된다.
  • 빠른 재전송(Fast Retransmit)
    • 수신측에서 패킷을 받을 때 먼저 도착해야 할 패킷이 도착하지 않고 다음 패킷이 도착한 경우 순서대로 도착한 마지막 패킷의 다음 패킷의 번호를 전송하여 송신측이 중복된 ACK 패킷을 받아 문제가 되는 순번의 패킷을 재전송할 수 있음
    • 중복된 순번의 패킷을 3개 받으면 재전송하며 이 현상이 발생하면 혼잡이 발생했음을 인식, 윈도우 사이즈를 절반으로 줄임
  1. AIMD(Additive Increase Multicative Decrease)

    • 합 증가 / 곱 감소 알고리즘이다.
    • 처음에 패킷 하나를 보내기 시작하여 정상 동작할 때마다 윈도우 사이즈를 1씩 증가시킨다. 도중에 전송하며 패킷 전송을 실패하거나 Time out이 발생하면 윈도우 사이즈를 절반으로 줄인다.
    • 나중에 진입하는 호스트도 시간이 지나면 공평하게 전송한다는 특징이 있다.
    • 네트워크 수용 한도 주변에서는 효율적이나 초기 전송속도에서 비효율이 발생
  2. Slow Start

    • AIMD와 동일하게 초기에는 패킷을 하나씩 전송하다가 ACK 패킷이 도착할 때마다 윈도우 사이즈를 1씩 증가시킨다. 결국 이전에 보낸 패킷이 모두 도달하면 윈도우 사이즈는 2배씩 늘어난다. 따라서 윈도우 사이즈의 그래프는 지수함수 형태를 갖는다.
    • 혼잡 현상 발생 시 윈도우 사이즈를 1로 감소시킨다.
    • 초기에는 네트워크 수용량을 예측할 수 없으나 한 번 혼잡 현상을 경험하고나면 혼잡현상이 발생했던 윈도우 사이즈의 절반까지는 지수함수적으로 증가시키되 그 이후부터는 완만하게 1씩 증가시킨다.
    • 전송되는 데이터의 크기가 임계값에 도달하면 혼잡회피를 수행함

TCP 커넥션 끊기

  • 4way-handshake : 세션을 종료하기 위해 수행하는 절차
    1. FIN 비트 1 설정 후 송신측 연결 끊기 동작
    2. 수신측이 받았음을 ACK 번호를 송신
    3. 데이터 송신측이 세션을 종료하더라도 수신측은 일정 시간 대기 후 FIN 비트 1 설정 후 송신측으로 전송
      • 송신측이 보낸 데이터 패킷 중 FIN 패킷보다 느리게 수신측에게 도착할 경우 섣불리 수신측이 세션을 종료하면 유실되기 때문
    4. 송신측이 수신측의 FIN 패킷을 받으면 ACK 번호 송신하여 상호 연결 종료

Technical_Interview_Network_003_007.png

UDP

  • UDP : PC나 서버 등에 도달한 데이터를 적절한 애플리케이션에 배분하는 기능만을 수행하는 프로토콜
    • 데이터 송수신 시 UDP 헤더를 부착
  • UDP 헤더

Technical_Interview_Network_003_008.png

  • TCP와 달리 UDP는 신뢰성 보장을 위한 행위를 수행하지 않기에 데이터 전송효율이 좋다.
  • 크기가 큰 데이터를 분할하는 기능도 없어 애플리케이션이 적절히 분할해야 함
  • 제어용 짧은 데이터 송수신에 사용 - DNS 조회 등
  • 음성 및 동영상 데이터 송수신에 사용 - 전화기 등
    • 전화기 음성이 제대로 수신되지 않았을 경우 해당 데이터를 재전송하기보다 묵음처리하는 것이 더 나음을 의미

DNS

  • 애플리케이션 층의 프로토콜이며 TCP가 아닌 UDP 프로토콜을 이용함
  • TCP/IP 통신을 위해서는 반드시 IP 주소가 요구되나 사용자가 모든 IP 주소를 외울 수 없다.
  • 인간의 언어로 작성된 URL을 IP주소로 바꾸기 위해 사용하는 프로토콜
  • 호스트명 : 서버, 클라이언트 PC 등의 호스트에 사용자가 이해하기 쉬운 언어로 붙인 이름
  • DNS(Domain Name System) : (서버 이름 - IP 주소), (메일주소 - 메일 서버) 등을 대응시키기 위한 시스템
  • DNS resolve / resolver : DNS 서버의 클라이언트, DNS 서버로의 조회 메시지를 전달하고 응답을 받는다.
    • Name resolution(이름 해석) : DNS에 조회하여 IP 주소 등을 조회하는 행위, resolver가 수행

DNS 서버의 기본 동작

  • 클라이언트에서 조회 메시지를 수신하고 요청한 내용에 대한 응답으로 이루어짐
  • 조회 메시지의 구조
    • 이름 : 서버 이름이나 메일의 배송 목적지(@뒤의 도메인)
    • 클래스 : 초기 DNS 구성 시 인터넷을 제외한 네트워크를 염두하여 생성
      • 현재는 인터넷의 "IN"만 존재
    • 타입 : 어떤 타입의 정보를 요구하는지 표기
      • A : 도메인의 IPv4 주소
      • AAAA : 도메인의 IPv6 주소
      • MX : 메일의 목적지
      • CNAME : 호스트명에 대응하는 별명
      • NS : 도메인명을 관리하는 DNS 서버
      • PTR : IP 주소에 대응하는 호스트명

Technical_Interview_Network_003_009.png

도메인의 계층, name resolution

  • https://abc.co.kr은 여러 개의 도메인으로 구성되어 있다.
  • 도메인명 : 도메인이 갖는 계층적 구조의 이름
  • abc.co.kr의 경우 kr 도메인 하단의 co 도메인 하단의 abc를 지칭
  • 하나의 도메인을 여러 DNS 서버에 분할 등록은 불가
  • 하나의 DNS 서버에 여러 도메인 등록은 가능
  • 루트 도메인 : 가장 최상단의 도메인으로 루트 도메인의 DNS 서버는 세계에 13개의 IP 주소 존재한다. 보통 국가 코드가 .net, .com 등에 대응되는 정보를 등록
  • 최상위 도메인 : .kr, .jp처럼 국가코드나 .com 등을 지칭한다. 일반적으로 국가 단위로 관리

Technical_Interview_Network_003_010.png

  1. 사전에 지정한 DNS 서버 캐시에 질의한 URL의 정보가 있으면 그대로 회신

  2. client가 네트워크 설정 시 사전에 명시한 DNS 서버로 요청

  3. 요청받은 DNS 서버가 주요 도메인에 질의, 하단의 .com DNS 서버 주소 응답

  4. .com DNS 서버에 질의, def 도메인의 DNS 서버 주소 응답

  5. .def DNS 서버에 질의, .abc 도메인 주소를 갖고 있어 IP 주소 전달

  6. 요청받은 DNS 서버가 클라이언트로 IP 주소 응답

  7. 회신받은 IP 주소를 이용해 통신

  • DNS 서버의 캐싱 : 매번 최상위 도메인에 질의하는 행위는 상당히 비효율적이다. 자주 쓰이는 도메인의 주소는 캐싱해두고 hit될 경우 즉시 응답, miss일 경우 조회하여 조회 비용 절감
    • 정보의 유효성 검증이 필요하므로 주기적으로 최신 상태 업데이트 알고리즘을 적용

DHCP

  • DHCP : 애플리케이션 층의 프로토콜 중 하나로 TCP/IP 설정이 제대로 되어있지 않아 오류가 발생하는 경우를 방지하기 위해 설정을 자동화하는 프로토콜
  • DHCP 클라이언트 : 이용자가 DHCP를 사용해 설정을 자동화하도록 설정한 클라이언트
    • DHCP DISCOVER : DHCP 존재 여부, 사용 가능한 TCP/IP 설정 질의
    • DHCP OFFER : TCP/IP 설정 질의에 따른 설정 제공
    • DHCP REQUEST : 설정 정보(TCP/IP설정)를 사용하겠다는 요청
    • DHCP ACK : REQUEST로 요청한 설정 정보를 사용하게 했다는 응답

읽기 전

  • 불필요한 코드나 잘못 작성된 내용에 대한 지적은 언제나 환영합니다.
  • 개인적으로 사용해보면서 배운 점을 정리한 글입니다.
  • 기술면접만을 준비하기보다 비전공자 입장에서 Network의 기본적인 내용만 짚기 위해 작성되었습니다.

TCP/IP의 계층

  • TCP/IP : TCP와 IP 중심의 프로토콜 집합, 네트워크의 공통 언어
    • 호스트 : TCP/IP로 통신하는 네트워크 기기 전반을 일컬어 부르는 용어
    • 현재는 거의 TCP/IP가 주요하다.

TCP/IP의 계층 구조

  • 네트워크 인터페이스 층 : 이더넷, 무선 LAN, PPP 등의 프로토콜로 자유롭게 선택하여 통신하며 상대방과 동일한 방식을 채택할 필요는 없다.

  • 인터넷 층 : IP, ICMP, ARP 등의 프로토콜로 엔드투엔드 통신을 담당

  • 트랜스포트 층 : TCP, UDP가 있다. 애플리케이션 데이터를 할당한다.

  • 애플리케이션 층 : HTTP, SMTP, POP3, DHCP, DNS 등이 있다. 애플리케이션에서 다룰 데이터 형식과 절차를 결정한다.

  • OSI 7계층도 있으나 거의 4계층 위주로 통신이 진행된다. (네트워크 엔지니어라면 7계층 모두 숙지해야 할지도)

  • 네트워크 인터페이스 층

    • 네트워크 범위 : 라우터와 레이어 3 스위치로 묶이는 범위 or 레이어 2 스위치로 구성되는 범위

    • 하나의 네트워크 안에서 데이터를 전송

    • 레이어 2 스위치에 연결된 PC 간 통신

      ex) 유선(이더넷), 무선 LAN(Wi-Fi), PPP 등이 있음

Technical_Interview_Network_002_001.png

  • 인터넷 층

    • 거대한 네트워크 안에서 데이터를 전송하는 역할
    • 라우터 : 네트워크끼리 연결하고 데이터를 전송하는 기기
      • 라우팅 : 라우터에 의한 네트워크 간 전송
    • 엔드 투 엔드 통신 : 원격지 네트워크에서 최종 출발지와 목적지 간 데이터 전송
    • IP / ICMP / ARP 프로토콜 존재
    • IP : 엔드 투 엔드 통신에 이용되는 프로토콜
    • ICMP / ARP : IP를 보조하는 프로토콜

Technical_Interview_Network_002_002.png

  • 트랜스포트 층

    • PC 사용 시 복수의 네트워크 애플리케이션 동작이 가능하게끔 기능
    • 최하층부터 트랜스포트 층까지 도달 시 출발지 - 목적지 간 애플리케이션끼리 데이터 송/수신 가능
    • TCP와 UDP 프로토콜 존재
    • TCP : 엔드 투 엔드 통신의 신뢰성을 확보하는 프로토콜
  • 애플리케이션 층

    • 애플리케이션의 기능 실행을 위한 데이터의 형식과 처리 절차를 결정
    • HTTP, SMTP, POP3, DHCP, DNS 등 다양함
    • DHCP와 DNS는 애플리케이션에서 사용하지 않고 애플리케이션의 통신을 준비하는 프로토콜이다.

데이터의 송/수신

  • TCP/IP에서는 TCP 4계층에 따라 4개의 프로토콜을 조합한다.
  • 헤더 : 각 프로토콜의 기능 실행을 위해 정보를 담는 구조체
    • 각 프로토콜은 데이터 전송 시 헤더를 같이 추가하여 보낸다.
  • 캡슐화 : 프로토콜이 데이터 전송 시 헤더를 추가하는 과정을 의미
  • 비캡슐화 : 프로토콜이 데이터 수신 시 첨부된 프로토콜의 헤더를 참고하여 적절히 처리 후 헤더를 벗긴 뒤 다른 프로토콜로 넘기는 과정

Technical_Interview_Network_002_003.png

데이터 송신 과정 - HTTP 통신

  1. 웹 브라우저의 데이터는 HTTP 헤더를 앞에 첨부하여 TCP로 전달
  2. TCP 프로토콜이 TCP 헤더를 첨부, IP로 전달
  3. IP 프로토콜이 IP 헤더 첨부, 이더넷으로 전달
  4. 이더넷 프로토콜이 이더넷 헤더와 FCS 추가
    • FCS(Frame Check Sequence) : 에러 체크를 위한 정보
  • 4번까지 수행하면 네트워크로 내보낼 데이터 전체가 완성된다.

Technical_Interview_Network_002_004.png

데이터 수신 과정 - HTTP 통신

  1. 데이터 수신 시 물리적 신호를 디지털로 변환, 이더넷 헤더 참조하여 자신이 수신처가 맞는지 확인하고 FCS로 데이터의 오류 여부를 체크하나. 이상이 없다면 이더넷 헤더, FCS를 제거하고 IP로 넘긴다.
  2. IP에서 IP헤더를 참조해 수신처가 맞는지 확인, 이후 IP 헤더를 제거하고 TCP로 넘긴다.
  3. TCP에서 TCP 헤더를 참조해 어느 애플리케이션 데이터인지 확인한다.(여기서는 HTTP) 이후 TCP 헤더를 제거하고 웹 애플리케이션으로 넘긴다.
  4. 웹 애플리케이션이 HTTP 헤더와 그 뒤의 데이터 부분을 처리한다.

Technical_Interview_Network_002_005.png

계층별 데이터 구분

  • 기기가 다루는 단계에 따라 주목할 계층을 특정하기 위해 호칭을 구분하기도 한다.
  • 애플리케이션 층 : 메시지(ex. HTTP 메시지)
  • 트랜스포트 층 : 세그먼트 / 데이터그램(ex. TCP 세그먼트, UDP 데이터그램)
  • 인터넷 층 : 패킷 / 데이터그램(ex. IP 패킷, IP 데이터그램)
  • 네트워크 인터페이스 층 : 프레임(ex. 이더넷 프레임)

읽기 전

  • 불필요한 코드나 잘못 작성된 내용에 대한 지적은 언제나 환영합니다.
  • 개인적으로 사용해보면서 배운 점을 정리한 글입니다.
  • 기술면접만을 준비하기보다 비전공자 입장에서 Network의 기본적인 내용만 짚기 위해 작성되었습니다.

네트워크 개관

  • 네트워크 : 그물처럼 구성된 시스템
  • 컴퓨터 네트워크 : 컴퓨터끼리 데이터를 주고받는 시스템. 으레 네트워크라 부른다.
  • 접속 권한에 따른 구분
    • 사설 네트워크 : 접속할 수 있는 사용자를 제한
    • 인터넷 : 사용자를 제한하지 않고 누구나 접속 가능(악성 유저 포함)
  • LAN(Local Area Network) : 근거리 통신망 (거점 내 기기들 간 연결)
  • WAN(Wide Area Network) : 장거리 통신망 (거점 LAN 간 연결)
  • AS(Autonomous System) : 인터넷에 연결된 다양한 조직들 간 네트워크
    • ISP(Internet Service Provider) : AS의 일종으로 인터넷 서비스를 제공하는 업체
    • ISP의 상위 그룹을 Tier 1이라 하며 Tier 1이외의 ISP는 결국 Tier 1에 연결되어 자신 이외의 네트워크 정보를 입수한다.
  • 애플리케이션 : 네트워크에서 데이터를 주고받는 주체(ex. 브라우저)
    • client-server 애플리케이션 : 요청/응답 과정을 통해 데이터를 주고받는 애플리케이션
    • peer to peer 애플리케이션 : 서버 없이 client 간 데이터를 주고받는 애플리케이션
      • 통신 client 특정을 위해 서버가 개입되기도 한다.
  • 네트워크 아키텍처 : 프로토콜의 집합(TCP/IP, OSI 등)
    • 현재는 거의 TCP/IP로 통일되었다.
  • 프로토콜 : 네트워크 통신에 필요한 데이터 형식 등의 규칙
  • 온프레미스 : 직접 서버를 운용/관리하는 방식
  • 클라우드 : 서버를 직접 운용하지 않고 인터넷으로 서버의 기능만 이용, 서버의 운용/관리는 클라우드 사업자가 수행
    • IaaS(Infrastructure as a Serveice) : CPU/메모리/스토리지 등 하드웨어만 이용
    • PaaS(Platform as a Service) : IaaS에 OS/미들웨어(데이터베이스)까지 추가
    • SaaS(Software as a Service) : 특정 소프트웨어 기능까지 이용(ex. 온라인 스토리지)

네트워크의 구성

  • 기본적인 네트워크 기기 : 라우터, 레이어 2 스위치, 레이어 3 스위치
    • 데이터 수신 : 전기 신호 등 물리적 신호를 0, 1로 구성된 디지털 신호로 변환
    • 데이터 전송처 결정 : 데이터에 포함된 제어 정보를 참조하여 전송지점 특정
    • 데이터 전송 : 데이터를 물리적 신호로 변환하여 전송
  • 인터페이스 : 네트워크 기기에 존재하는 접속 장치, 포트라고도 부른다.
    • 디지털 데이터와 물리적 신호의 경계점으로 디지털 데이터가 전기신호 등 물리적 데이터로 변환되어 인터페이스에서 송출, 링크로 전달됨
  • 링크 : 각 기기의 인터페이스 간의 연결
  • 전송 매체 : 인터페이스를 서로 연결하는 케이블(무선도 존재)
  • LAN을 구축하는 기술(토큰 링크, FDDI도 존재하나 거의 사용하지 않음)
    • 이더넷, 무선 LAN
    • 이더넷 인터페이스가 있는 기기들 간 연결 or 무선 LAN 인터페이스가 있는 기기들 간 연결하여 LAN 구축

결론부터 말하자면 진짜 꼼꼼하게 공부하지 않으면 힘들게 풀 수 밖에 없는 시험이었고 그 힘들게 풀었던 사람이 필자였다.

출제 범위는 DB, 자료구조, 알고리즘, 네트워크, 운영체제, 디자인 패턴, 컴퓨터 구조가 주를 이뤘고 그 외 앞의 내용들을 응용해서 풀어내야만 했던 심화 문제까지 나왔다. 총 48문제 90분으로 심화문제를 놓쳤다 하더라도 앞의 이론 문제를 깔끔하게 맞춰내야 통과할 것 같은데 개략적으로 공부를 해서 그런가 나름 포스팅하며 꼼꼼히 정리하고자 했던 자료구조, 알고리즘, 운영체제는 어느정도 풀어냈지만 나머지는 솔직히 조금 감으로 풀어냈다. 풀면서 합격할 거란 생각은 들지 않았지만 그래도 아직 정리를 하지 못한 과목들에 대해서 어느 수준까지 정리해야 하는지 느낌이 와서 아예 소득이 없진 않았다고 생각한다. 필기 테스트를 통과하더라도 이렇게 힘겹게 풀 실력이면 아마 면접가서는 그냥 털리고 오지 않을까 싶다. 올해 라인과의 인연은 여기까지로 보고 있다.

결과 : 불합격했습니다. 자료구조, 알고리즘, 운영체제까지만 정리하고 네트워크와 DB는 다른 분들이 정리한 기술면접 자료들 며칠만에 넓고 얕게 훑고 갔는데 요번에 네트워크 공부하면서 잘못 푼 개념이 계속 보였어서 얼추 결과는 예상했습니다. 아쉽지만 컴퓨터 구조, 리눅스 컴파일, DB(인덱싱, 쿼리 등)을 다음 전형 전까지 정리한다면 필기는 통과할 수 있을 것 같습니다.

+ Recent posts