네트워크

Smile:)today·2024년 6월 11일

웹 통신

  1. 사용자가 웹 브라우저를 통해 URL 입력
  2. 입력된 URL 중 도메인 네임을 DNS 서버에서 검색
  3. DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달
  4. 웹 페이지 URL 정보와 전달받은 IP 주소를 이용해 HTTP 요청(=HTTP Request) 메시지를 생성
  5. 요청은 TCP를 통해 서버로 전송됨
  6. 서버는 클라이언트의 요청을 받고 응답(=HTTP Request)을 전송

OSI 7계층

7계층을 나누는 이유

통신이 일어나는 과정을 단계별로 알 수 있고, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문이다.

1. Physical(물리계층)

  • 데이터를 전기 신호로 바꿔서 와이어에 실어주는 계층 → 간단히 말해, 데이터 전송
  • 장비: 리피터(전기 신호 증폭), 허브
  • 단위: Bit

2. Data Link(데이터 링크 계층)

  • 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할
  • Mac 주소를 통해 통신
  • Frame에 Mac주소를 부여하고 에러검출, 재전송, 흐름제어 진행
  • 장비: Bridge, L2 Switch
  • 단위: Frame
  • 프로토콜: 이더넷, HDLC

3. Network(네트워크 계층)

  • IP 주소를 기반으로 경로를 찾아주는 계층
  • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능
  • 라우터를 통해 이동할 경로를 선택하여 IP 주소를 지정하고, 해당 경로에 따라 패킷을 전달
  • 장비: Router(L3 Switch), IP
  • 단위: Packet
  • 프로토콜: IP, RIP, ARP, ICMP

4. Transport(전송 계층)

  • TCP, UDP 등의 프로토콜을 통해 통신을 활성화
  • Port기반 데이터 세그먼트 전송
  • 장비: 게이트웨이
  • 단위: Segment(TCP)/Datagram(UDP)
  • 프로토콜: TCP/IP

5. Session

  • 데이터가 통신하기 위한 논리적 연결 담당
  • TCP/IP 세션을 만들고 없애는 책임
  • 세션 설정, 유지, 종료, 전송 중단 시 복구
  • ex) API, Socket

6. Presentation(표현 계층)

  • 데이터 표현에 대한 독립성을 제공하고 암호화
  • 파일 인코딩, 명령어를 포장/압축/암호화
  • ex) JPEG, MPEG

7. Application(응용 계층)

  • 최종 목적지, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
  • UI, 전자우편, DB 관리 등 제공
  • ex) HTTP, FTP, DNS 등

TCP

  • 신뢰적, 순서 존재
  • 혼잡 제어
  • 흐름 제어
  • 연결지향(설정필요)

4가지 문제점

  1. 손실: Packet이 손실
  2. 순서바뀜: Packet의 순서가 바뀜
  3. Congestion: 네트워크 혼잡
  4. Overload: Receiver가 overload 됨

특징

  • 연결형 서비스로 가상 회선 방식 제공
  • 3-way handshaking을 통해 연결 설정, 4-way handshaking을 통해 해제
  • 흐름 제어 및 혼잡 제어
  • 높은 신뢰성
  • 속도 느림
  • 전이중(Full-Duplex), 점대점(Point to Point) 방식

TCP 서버 특징

  • 서버소켓은 연결만 담당
  • 서버와 클라이언트는 1:1로 연결
  • 전송 데이터 크기 무제한
  • 패킷에 응답을 해야하기 때문에 성능 낮음
  • 스트리밍 서비스에 불리

전송과정

1. 연결 설정(3-way handshake)

1) A 프로세스가 SYN 플래그를 지정한 세그먼트를 전송해 연결 요구
2) B 프로세스가 긍정 응답시 ACK필드에 SYN의 순서번호 10과 1을 더한 11을 지정해 회신
3) B 프로세스가 전송한 수락 세그먼트가 제대로 도착했음을 알림, 데이터도 함께 보냄(데이터가 있다면)

2. 데이터 전송

window 필드를 통해 흐름제어
데이터 전송 과정에서 오류가 발생할 경우 수신 프로세스에서 회신을 받을 수 없어 송신 프로세스의 타임아웃 기능에 의한 세그먼트 재전송이 이루어짐

  • 데이터를 작은 패킷으로 나누어 전송
  • 각 패킷에는 순서 번호가 부여되어 순서대로 도착할 수 있게 함
  • 수신자는 패킷을 받으면 송신자에게 ACK을 보냄

3. 연결 해제(4-way handshake)

해제하고자 하는 프로세스에서 FIN=1 로 전송,
수신 프로세스에서도 FIN=1로 보내면 연결 해제/FIN을 보내지 않으면 연결 계속 유지

혼잡제어

1. 느린 시작(Slow Start)

  • 전송 속도 천천히 하여 시작
  • 초기에는 작은 윈도우 크기, ACK를 받을 때마다 윈도우 크기를 지수적으로 증가

2. 혼잡 회피(Congestion Avoidance)

  • 윈도우 크기가 일정 임계값에 도달하면, 지수적 증가 말고 선형적으로 증가

3. 혼잡 감지(Congestion Detection)

  • 네트워크 혼잡이 감지되면(ex. 패킷 손실 발생하면), 혼잡 윈도우 크기를 크게 줄임
  • 이때 혼잡 윈도우 크기를 절반으로 줄이고 혼잡 회피 단계로 돌아감

UDP

  • Transport Layer
  • 신뢰성 X, 무작위 전송
  • 비연결형(설정 필요 없음)

특징

  • 비연결형으로 데이터그램 방식 제공
  • UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출
  • 속도 빠름
  • 소켓 대신 IP를 기반으로 데이터 전송
  • 서버와 클라이언트는 1:1, 1:N, N:M 등으로 연결
  • 오류 확인 불가
  • 성능이 중요시 되는 경우 사용

사용

  • 스트리밍 멀티미디어 앱들
  • DNS
  • SNMP
  • HTTP/3

DNS에서 UDP를 사용하는 이유

  • 리퀘스트의 양이 적어서 UDP 리퀘스트에 넣을 수 있다.
  • 3-way handshaking으로 연결을 유지할 필요가 없다.
  • 리퀘스트에 대한 손실은 Application Layer에서 제어가 가능하다.

DNS

도메인 이름 시스템(Domain Name System)은 사용자에게 친숙한 도메인 이름을 컴퓨터가 네트워크에서 서로를 식별하는데 사용하는 IP(Internet Protocol)주소로 변환하는 인터넷 표준 프로토콜의 구성요소.
쉽게 말해, 도메인이름 -> IP주소 로 변환하는 것

작동원리

1. 도메인 이름 입력
예) www.name.com을 입력
2. DNS 리졸버 요청
브라우저 -> 로컬 DNS 리졸버에 요청
3. 캐시 확인
캐시에 해당 도메인 이름의 IP주소가 있는지 확인 -> 있으면 그 주소 반환
4. 루트 네임서버 질의
캐시에 없으면, 리졸버는 루트 네임서버에 질의, 루트 네임서버는 최상위 도메인(TLD) 서버의 주소를 알려줌
5. TLD 네임서버 질의
리졸버는 TLD 네임서버에 질의하여 해당 도메인의 권한 있는 네임서버의 주소를 얻음
6. 권한 있는 네임서버 질의
리졸버는 권한 있는 네임서버에 질의해서 최종적으로 도메인 이름에 대한 IP 주소를 얻음
7. IP 주소 반환
리졸버는 얻은 IP 주소를 사용자에게 반환 -> 브라우저는 해당 IP 주소를 사용하여 웹 서버에 접속


HTTPS

HTTP(HyperText Transfer Protocol)
하이퍼텍스트를 전송하기 위해 사용되는 통신 규약
HTTPS = HTTP + Secure Socket
HTTPS보안 요소가 추가되어 서버와 클라이언트 사이의 모든 통신 내용이 암호화된다.

동작 과정

  1. 클라이언트 요청: 사용자가 웹에 HTTPS URL 입력
  2. 서버 연결: 브라우저는 웹 서버에 연결을 시도, 이때 HTTPS 포트(443번) 사용
  3. SSL/TLS handshake
    • 서버 인증서 제공: 서버는 SSL/TLS 인증서를 브라우저에 보냄
    • 인증서 검증: 브라우저는 인증기관에 의해 서명되었는지 검증
    • 세션 키 생성: 브라우저와 서버는 대칭 키 암호화를 위한 세션 키를 생성, 공개키 암호화를 사용하여 안전하게 수행
  4. 암호화된 통신: 세션 키가 설정되면 세션 키를 통해 암호화되어 전송되기 때문에 데이터가 전송 중에 도청되거나 변조되는 것을 방지
  5. 요청 및 응답: 브라우저는 암호화된 상태로 서버에 HTTP 요청을 보냄->서버로부터 암호화된 응답을 받음
  6. 연결 종료: 브라우저와 서버는 SSL/TLS 연결을 종료

GET

서버로부터 정보를 요청할 때 사용되는 HTTP 메소드.

작동 방식

  1. 사용자가 웹 브라우저에 URL 입력 -> 브라우저는 GET 요청을 서버로 보냄
  2. URL에 데이터 포함
  3. 서버 응답: 서버는 요청된 데이터를 처리한 후 결과를 웹 페이지로 반환

POST

데이터를 제출할 때(업로드) 사용되는 HTTP 메소드.

작동 방식

  1. 사용자가 웹 페이지에 폼을 작성하고 제출하면 브라우저는 POST 요청을 서버로 보냄
  2. 요청할 때 필요한 데이터는 HTTP 요청의 Body에 포함, URL에는 포함되지 X
  3. 서버 응답: 서버는 제출된 데이터 처리, 결과를 웹 페이지로 반환하거나 다른 작업 수행

GET vs POST

GETPOST
데이터 위치URL에 포함HTTP 바디에 포함
보안데이터가 URL에 노출GET보다는 안전
데이터 길이URL 길이에 제한 O데이터 길이 제한 X
캐싱OX

쿠키(Cookie) vs 세션(Session)

쿠키와 세션을 사용하는 이유

HTTP는 connectionless(응답을 보낸 후 연결을 끊음), stateless(상태정보를 가지지 X) 하기 때문에 서버는 클라이언트가 누구인지 매번 확인해야함
-> 기억할 필요가 있기 때문에 쿠키와 세션 사용

쿠키 동작

  1. 클라이언트가 페이지 요청
  2. 웹 서버가 쿠키 생성
  3. 클라이언트에게 HTTP 화면과 함께 쿠키에 정보를 담아서 돌려줌
  4. 클라이언트가 가지고 있다가 다시 서버에 요청할 때 쿠키도 전송

세션 동작

  1. 클라이언트가 페이지 요청
  2. 서버는 클라이언트의 리퀘스트-헤더 필드인 쿠키를 확인하여 클라이언트가 해당 세션-아이디를 보냈는지 확인
  3. 세션-아이디가 존재하지 않으면 서버는 세션-아이디를 생성해서 클라이언트에게 전송
  4. 서버에서 클라이언트로 준 세션-아이디를 쿠키를 사용하여 서버에 저장
  5. 클라이언트는 재접속 시, 이 쿠키를 이용해 세션-아이디 값을 서버에 전달

차이점

쿠키세션
저장 위치클라이언트웹 서버
만료 시점쿠키 저장 시 설정브라우저 종료시 삭제
저장 형식textobject
사용하는 자원클라이언트 리소스웹 서버 리소스
용량 제한있음없음(서버가 허용하는한)
속도빠름느림
보안성안좋음좋음

세션 기반 인증 vs 토큰 기반 인증


RESTFul

REST

자원을 이름으로 구분하여 해당 자원의 상태 정보를 주고받는 모든 것

장점

  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능 -> 다양한 클라이언트에 대처 가능, 애플리케이션 분리 및 통합 가능
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악

REST API

API: 서로 정보를 교환가능 하도록 하는 것
REST API: REST 기반으로 서비스 API를 구현한 것

RESTFul

  • REST라는 아키텍처를 구현하는 웹서비스를 나타내기 위해 사용되는 용어
  • REST API를 제공하는 웹 서비스를 RESTFul하다고 함

라우팅

네트워크에서 경로를 선택하는 프로세스

라우터

한 개 이상의 근거리 통신망(LAN) 간에 데이터를 전달하는 게이트웨이(기계)

라우팅 알고리즘

Distance-VectorLink State
장점구현 간단대규모 네트워크 가능
메모리 사용 적음루프 발생 X
네트워크 크기 제한 X라우팅 테이블 크기 작음
단점수렴문제 발생가능성구현 복잡
루프발생 가능성많은 메모리와 높은 성능의 라우터 필요
유지 및 처리 부담 높음

MAC Address(Media Access Control)

MAC주소IP주소
설명물리적 주소논리적 주소
역할로컬 네트워크에서 장치 식별 및 통신 관리광범위 네트워크에서 장치 식별 및 라우팅 관리
변경 가능성매우 어렵거나 불가능(고유)네트워크 설정에 따라 변경 가능(동적할당)
주소 형식16진수로 이뤄진 48비트 주소10진수로 이뤄진 32비트 주소(IPv4)
16진수로 이뤄진 128비트 주소(IPv6)

Switch(스위치)

네트워크 스위치(Network Switch)란 네트워크 단위들을 연결하는 통신 장비로서 허브보다 전송 속도가 개선된 것

  1. L2 스위치(Layer 2 = Data Link Layer)
  • 보통 스위치라 하면 L2 스위치를 말하는 것임
  • 도착한 패킷의 가장 앞에 있는 목적지 MAC Address를 보고 어떤 포트로 보낼 것인가를 판단
  1. L3 스위치(Layer 3 = Network Layer)
  • IP 스위칭 가능 -> 라우터 기능 가능
  • 라우터보다 가격 및 성능 우수, but 소프트웨어 기능 적음
  1. L4 스위치(Layer 4 = Transport Layer)
  • TCP/UDP 등에서 스위칭 수행
  • TCP/UDP의 헤더를 보고 구분하여 어떤 것을 우선시해서 스위칭 할지 판단 가능 -> 로드 밸런싱 가능
*로드 밸런싱(Load Balancing): 둘 혹은 셋 이상의 중앙처리장치 혹은 저장 장치와 같은 컴퓨터 자원들에게 작업을 나누는 것

URI vs URL

URI(Uniform Resource Identifier)

URI는 인터넷 자원을 식별하는 문자열
1) URL: 자원의 위치 지정
2) URN: 자원의 이름 지정, 위치에 독립적

URL(Uniform Resource Locator)

URL은 자원의 위치를 나타내는 URI의 한 형태로 자원에 접근하는 방법(프로토콜)을 포함함


DHCP

DHCP(Dynamic Host Configuration Protocol)
네트워크에서 장치들이 자동으로 IP 주소를 포함한 네트워크 설정을 받을 수 있도록 도와주는 프로토콜 => 즉, IP 주소 할당

DHCP 동작과정

  1. DHCP 클라이언트가 DHCP 서버를 찾기 위해 'DHCP Discover'라는 메시지를 브로드캐스트로 전송
  2. DHCP 서버는 DHCP Discover 받고난 후 클라이언트에 할당할 DHCP 메시지(IP주소, 서브넷, 게이트웨이, DNS 정도, Lease Time 등)을 보냄
  3. DHCP 서버로부터 제안받은 IP 주소와 DHCP 서버 정보를 포함한 DHCP Request를 브로드캐스트로 전송
  4. DHCP Acknowledgement
    DHCP 클라이언트로부터 IP 주소를 사용하겠다는 요청을 받으면 DHCP 서버에 해당 IP를 어떤 클라이언트가 언제부터 사용하기 시작했는지 정보를 기록하고 DHCP Request 메시지를 정상적으로 수신했다는 응답 전송

장점

  1. 관리 효율성: IP 주소가 자동으로 할당되므로 네트워크 관리가 편함
  2. 오류 감소: 수동 설정에서 발생할 수 있는 오류 방지
  3. 유연성: 유연한 네트워크 환경 제공

CSMA

CSMA(Carrier Sense Multiple Access)

  • 네트워크 통신에서 여러 장치가 동일한 통신 채널을 공유할 수 있도록 하는 프로토콜
  • 주로 이더넷과 무선 네트워크에서 사용
  • 네트워크 충돌을 최소화하면서 데이터를 효율적으로 전송

CSMA/CD vs CSMA/CA

CSMA/CD는 물리적 충돌이 감지된 후 이를 해결하는 반면,
CSMA/CA는 충돌을 사전에 피하려는 접근 방식을 사용

profile
Hi, I'm vitamin

0개의 댓글