[CS/Network] 네트워크 간단 요약

cs네트워크
avatar
2025.03.17
·
13 min read

  • OSI 7계층

    1. 물리(physical)

      • 리피터, 케이블, 허브 등

      • 데이터 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간

      • 데이터를 전송하는 역할

    2. 데이터 링크(data link)

      • 브릿지, 스위치 등

      • 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할

      • Mac 주소를 통해 통신

      • 프레임에 Mac 주소를 부여하고 에러검출, 재전송, 흐름제어를 진행

    3. 네트워크(network)

      • 라우터, IP

      • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능 담당

      • 라우터를 통해 이동할 경로를 선택하여 IP 주소를 지정하고, 해당 경로에 따라 패킷 전달

      • 라우팅, 흐름제어, 오류제어, 세그멘테이션 등 수행

    4. 전송(transport)

      • TCP, UDP

      • TCP와 UDP 프로토콜을 통해 통신 활성화

      • 포트를 열어두고 프로그램들이 전송을 할 수 있도록 제공

      • TCP : 신뢰성, 연결지향적

      • UDP : 비신뢰성, 비연결성, 실시간

    5. 세션(session)

      • API, Socket

      • 데이터가 통신하기 위한 논리적 연결 담당

      • TCP/IP 세션을 만들고 없애는 책임을 지님

    6. 표현(presentation)

      • JPEG, MPEG 등

      • 데이터 표현에 대한 독립성을 제공하고 암호화하는 역할 담당

      • 파일 인코딩, 명령어 포장, 압축, 암호화

    7. 응용(application)

      • HTTP, FTP, DNS 등

      • 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스 수행

      • 사용자 인터페이스, 전자 우편, 데이터베이스 관리 등

  • TCP vs UDP 차이

    • TCP

      • 네트워크 통신에서 신뢰적인 연결방식

      • 정확한 전송을 보장해야 함

      • 기본적으로 unreliable network에서 reliable network를 보장할 수 있도록 하는 프로토콜

      • network congesion avoidance algorithm 사용

      • 손실, 순서바뀜, 혼잡, 오버로드 4가지의 문제점이 존재

      • 데이터 분석, 중복, 순서가 뒤바뀜 등을 자동으로 보정해줘서 송수신 데이터의 정확한 전달을 할 수 있도록 해준다.

      • 흐름제어 : 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법

        • Stop and Wait : 매번 전송한 패킷에 대해 확인 응답을 받아야만 그 다음 패킷을 전송하는 기법

        • Sliding Window : 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어 기법

      • 혼잡제어 : 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법

        • AIMD(Additive Increase / Multiplicative Decrease) : 처음에 패킷을 하나씩 보내고 이것이 문제없이 도착하면 window 크기(단위 시간 내에 보내는 패킷의 수)를 1씩 증가시켜가며 전송하는 방법

        • Slow Start : 패킷을 하나씩 보내면서 시작하고, 패킷이 문제없이 도착하면 각각의 ACK 패킷마다 윈도우 크기를 1씩 늘린다. 즉, 한 주기가 지나면 윈도우 크기가 2배로 된다.

        • Fast Retransmit : 패킷을 받는 쪽에서 먼저 도착해야 할 패킷이 도착하지 않고 다음 패킷이 도착한 경우에도 ACK 패킷을 보내게 된다.

        • Fast Recovery : 혼잡한 상태가 되면 윈도우 크기를 반으로 줄이고 선형증가시키는 방법

    • UDP (User Datagram Protocol)

      • 데이터를 데이터그램 단위로 처리하는 프로토콜

      • 비연결형, 신뢰성 없는 전송 프로토콜

      • 데이터그램 단위로 쪼개면서 전송을 해야하기 때문에 전송계층

      • Transport layer에서 사용하는 프로토콜

      • IP가 제공하는 정도의 수준만을 제공하는 간단한 IP 상위 계층의 프로토콜

      • TCP와는 다르게 에러가 날 수도 있고, 재전송이나 순서가 뒤바뀔 수도 있어서 이 경우, 어플리케이션에서 처리하는 번거로움이 존재

      • 장점: 데이터의 신속성, 데이터의 처리가 TCP보다 빠름

      • 주로 실시간 방송과 온라인 게임에서 사용됨

  • 대칭키 vs 공개키

    • 대칭키(Symmetric Key)

      • 암호화와 복호화에 같은 암호키를 사용하는 알고리즘

      • 동일한 키를 주고 받기 때문에, 매우 빠르다는 장점

      • 대칭키 전달 과정에서 해킹 위험에 노출될 수 있다는 단점

      • MAC(Messeage Authentication Code)

    • 공개키(Public Key)/비대칭키(Asymmetric Key)

      • 암호화와 복호화에 사용하는 암호키를 분리한 알고리즘

      • 대칭키의 키 분배 문제를 해결하기 위해 고안

      • 자신이 가지고 있는 고유한 암호키(비밀키)로만 복호화할 수 있는 암호키(공개키)를 대중에 공개함

  • HTTP vs HTTPS 차이

    • HTTP(Hyper Text Transfer Protocol)

      • 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약

      • 텍스트 교환이므로, 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈 존재

    • HTTPS (HTTP Secure)

      • 인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약

      • 텍스트 암호화 (공개키 암호화 방식)

  • 3-way Handshake & 4-way Handshake 개념

    • 3-way handshake - 연결 성립

      • TCP는 정확한 전송을 보장해야 한다.

      • 통신하기에 앞서, 논리적인 접속을 성립하기 위해 해당 과정 진행

      1. 클라이언트가 서버에게 SYN 패킷 전송 (sequence : x)

      2. 서버가 SYN(x)을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄

      3. 클라이언트는 서버의 응답은 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+1)을 서버로 보냄

    • 4-way handshake - 연결 해제

      • 연결 성립 후, 모든 통신이 끝났다면 해제해야 한다.

      1. 클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보냄

      2. 서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보냄 (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태)

      3. 데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보냄

      4. 클라이언트는 FIN을 받고, 확인했다는 ACK를 서버에게 보냄 (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로, TIME_WAIT을 통해 기다림)

  • DNS, Load Balancing 개념

    • DNS(Domain Name Service)

      • UDP 사용

        • Request양이 적어서 UDP Request에 담길 수 있음

        • 3 way handshaking으로 연결을 유지할 필요 없음

        • Request에 대한 손실은 applicaton layer에서 제어 가능

        • port 53번

      • DNS는 데이터를 교환하는 경우로, Application layer protocol이다.

    • Load Balancing

      • 여러 서버에게 균등하게 트래픽을 분산시켜주는 것

      • 분산식 웹 서비스로, 여러 서버에 부하를 나누어주는 역할

      • 클라이언트와 서버 사이에 두고, 부하가 일어나지 않도록 여러 서버에 분산시켜주는 방식

      • 서비스를 운영하는 사이트의 규모에 따라 웹 서버를 추가로 증설하면서 로드 밸런서로 관리해주면 웹 서버의 부하를 해결할 수 있음

      • 서버 선택 방식

        • RR(라운드 로빈) - CPU 스케줄링의 라운드 로빈 방식 활용

        • Least Connections - 연결 개수가 가장 적은 서버

        • Source - 사용자 IP를 해싱하여 분배

      • 서버를 분배하는 로드밸런서에게 문제가 생길 수 있기 때문에 로드 밸런서를 이중화하여 대비 (Active, Passive)

  • IP, MAC 주소 역할

    • IP 주소

      • 네트워크 통신에 있어서 각각의 통신기기에 할당된 식별 번호

      • 네트워크 관리자 또는 인터넷 서비스 공급자가 제공받기 때문에 경우에 따라 바뀔 수 있다.

      • 서브넷 마스크 : 아이피 주소에서 네트워크 주소와 호스트 주소를 나눠주는 역할을 한다.

      • 호스트들 간의 네트워크 통신은 같은 네트워크 주소/대역 내에서만 이루어진다.

      • 다른 네트워크 대역의 호스트들과 연결하는 방법은 라우팅에 관련이 있다.

      • 아이피 주소가 같더라도, 서브넷 마스크가 다르면 아이피 주소가 의미하는 바가 완전히 달라지게 된다.

    • IPv4

      • 32비트 주소

      • 12개의 숫자

      • 4개의 그룹(Octet)으로 구성되며, 각 그룹은 0~255의 범위

      • RARP로 특정 연결에 대한 IP주소 검색 가능

    • IPv6

      • 32비트 16진수로 표시될 수 있는 128비트 이진 값

      • 16비트 16진수 필드의 순서로 항목 분리

      • 3.4 * 1038개의 IP주소 제공

      • IPv4 결핍 극복

      • 서브넷 마스크의 사용으로 주로 사용하지는 않는다.

    • MAC 주소

      • 콜론으로 구분된 6개의 부분으로 구성

        • MM : MM : MM 은 제조업체의 3바이트 주소

        • SS : SS : SS 는 일련번호의 NIC 카드

      • 48비트 16진수 주소

      • 각 부분은 알파벳 또는 숫자의 조합으로 되어 있다.

      • 네트워크 통신에서 통신기기의 식별번호 나타냄

      • 제품의 시리얼 넘버

      • 외부에서 내부의 사설 아이피로 통신요청을 할 때 중요한 역할

      • ARP는 MAC 주소를 수신하는 데 사용되는 프로토콜







- 컬렉션 아티클