네트워크(Network)

  • 컴퓨터간 통신을 의미
    • 파일 송수신, 웹 사이트, 이메일 열람 등
  • 컴퓨터간 통신을 위한 규칙이 있음


네트워크 구분

  • LAN(Local Area Network): 건물 등 특정 지역을 범위로 하는 네트워크
  • WAN(Wide Area Network): 인터넷 서비스 제공자(ISP)등이 제공하는 광역 네트워크
  • WLAN(Wireless Local Area Network): 무선 근거리 네트워크


OSI 7 Layer

  • 프로토콜 : 컴퓨터간 통신을 하기 위한 규칙
  • 헤더(Header): 계층을 지날때 추가, 해당 계층의 기능과 관련된 제어 정보가 포함
  • 캡슐화(Encapsulation)
    • 계층을 지날 때마다 제어 정보 추가
  • 역캡슐화(Decapsulation)
    • 계층을 지날때마다 제어 정보 제거
  • 용어 정리
    • 패킷(packet): 네트워크 계층에서 정의되는 데이터 단위
    • 프레임(frame): 데이터링크 계층에서 정의되는 데이터 단위
    • 체크섬(checksum): 전송 계층에서 데이터 전송중 손상/유실 확인을 위한 오류 점검 기능

osi7layer

계층 이름 역할과 기능 프로토콜
7계층 응용 계층(Application Layer) 애플리케이션 서비스 제공 HTTP, SMTP, FTP, NFS, Telnet
6계층 표현 계층(Presentation Layer) 문자 코드, 압축, 암호화 등의 데이터 변환 담당 JPEG, MPEG, CDR, SMB, AFP
5계층 세션 계층(Session Layer) 인증 및 서비스 제공 TLS, SSH, ISO8327, RPC
4계층 전송 계층(Transport Layer) 프로세스 간의 데이터 전송 TCP, UDP, RTP, SCTP, SPX
3계층 네트워크 계층(Network Layer) 데이터 경로 설정(스위칭,라우팅) IP, ICMP, ARP, BGP, IPX
2계층 데이터링크 계층(Data Link Layer) 네트워크 기기간 데이터 전송 및 물리 주소 결정 Ethernet, ATM, LAN, WIFI
1계층 물리 계층(Physical Layer) 시스템 간 물리적 연결, 전기 신호 변환 및 제어 Modem, Cable, Fiber


TCP vs UDP

  • TCP: 연결형 프로토콜, 데이터의 전송 순서 보장, 데이터 신뢰성 보장
  • UDP: 비연결형 프로토콜, TCP보다 전송속도 빠름, 주로 스트리밍/브로드캐스팅 서비스
    • UDP데이터는 데이터그램이라고 부름(패킷으로 부르지 않음)

tcp udp

포트(port) 번호

  • 목적지의 어떤 응용 프로그램에 데이터를 전달해야 하는지를 식별하는 기능
    • 포트번호는 0 ~ 65535
  • 자주 사용하는 포트
포트 TCP/UDP 설명
20 TCP FTP (파일 전송 프로토콜) - 데이터 포트
21 TCP FTP - 제어 포트(연결 시 인증과 컨트롤을 위한 포트)
22 TCP SSH (Secure Shell) - ssh scp, sftp같은 프로토콜 및 포트 포워딩
23 TCP 텔넷 - 인터넷을 통하여 원격지의 호스트 컴퓨터에 접속할 때 사용
25 TCP SMTP (Simple Mail Transfer Protocol) - 이메일 전송에 사용
53 TCP/UDP DNS(Domain Name System)
80 TCP/UDP HTTP - 웹 페이지 전송
110 TCP POP3 (Post Office Protocol version 3) - 이메일 가져오기에 사용
중앙 서버에서 로컬 장치로 이메일을 내려 받음
119 TCP NNTP (Network News Transfer Protocol) - 뉴스 그룹 메시지 가져오기에 사용
123 UDP NTP (Network Time Protocol) - 시간 동기화
143 TCP IMAP4 (인터넷 메시지 접근 프로토콜 4) - 이메일 가져오기에 사용
중앙 서버에서 메일 동기화
161 UDP SNMP (Simple Network Management Protocol) - Agent 포트
162 UDP SNMP - Manager 포트
194 TCP IRC (Internet Relay Chat)
443 TCP HTTPS - SSL 위의 HTTP (암호화 전송)
3389 TCP/UDP RDP (Remote Desktop Protocol) – log into a Windows instance
1433 TCP/UDP MSSQL Server
1521 TCP Oracle RDS
3306 TCP MySQL, MariaDB
5432 TCP/UDP PostreSQL, Aurora PostreSQL


TCP/IP 모델

  • 인터넷 통신을 위한 모델
  • OSI 7 Layer는 표준 모델, 현실에서 인터넷을 위해 사용하는 모델은 TCP/IP 모델

TCP-IP-model-vs-OSI-model


인터넷 프로토콜(IP)

  • Internet Protocol version 4
    • 32bit로 구성(232 : 8bit:8bit:8bit:8bit) : 0.0.0.0 ~ 255.255.255.255
    • 5개의 클래스로 분리, 이중 상위 3개 클래스가 주로 사용
      • A(0~127.255.255.255)
      • B(128~191.255.255.255)
      • C(192~223.255.255.255)
      • D(224~239.255.255.255)
      • E(240~255.255.255.255)
    • 자기 PC의 IP 주소: 127.0.0.1(DNS: localhost)
  • Internet Protocol version 6
    • 128bit로 구성(2128 : 16bit:16bit:16bit:16bit:16bit:16bit:16bit:16bit)


전송 제어 프로토콜(TCP)

스크린샷 2023-12-25 163242


TCP 연결 방식

  • 3-Way 핸드쉐이크(handshake): TCP 통신을 위한 연결 설명 과정

3way

  • 4-Way 핸드쉐이크(handshake): TCP 연결 해제 과정
    • 최근에는 FIN/ACK를 동시에 보냄

4way


TCP 전송

  • Sequence Number
    • 일정 단위로 데이터를 분할해서 전송
    • 송신측에서 수신측에 데이터가 몇 번째 데이터인지를 알려줌
  • ACK Number
    • 다음 번호의 데이터를 알려줌(어디까지 수신했는지 확인 가능)


TCP 제어

  • 흐름제어(Flow Control)

    • 송신 측과 수신 측의 데이터 처리 속도가 다를 수 있다.

      송신 측이 빠를 때 수신 측 버퍼가 넘치는 오버플로우 문제가 발생

      이러한 문제를 줄이기 위해 윈도우 크기로 송신 측의 데이터 전송량을 조절

    • Sliding Window Algorithm

      1. 송신측과 수신측 모두 자신의 윈도우 사이즈(버퍼 크기)를 적절한 사이즈로 설정
      2. 통신 과정 중에도 네트워크 혼잡 등의 조건을 통해 윈도우 크기는 유동적으로 설정된다
        • SYN과 SYN/ACK 사이의 시간 RTT(Round Trip Time)을 측정하여, 이를 기반으로 윈도우 사이즈 재설정
  • 혼잡제어(Congestion Control)

    • 혼잡 : 네트워크 내에 패킷의 수가 과도하게 증가하는 현상
    • 혼잡 현상을 방지하고 제거하기 위한 기능
    • Congestion Window
      • 송신 제어를 위한 윈도우는 2개
        • RWND(Receiver Window): 흐름제어(Sliding Window)에서 활용
        • CWND(Congestion Window): 네트워크 혼잡제어를 위해 활용
      • 송신측 최종 윈도우 크기: min(RWND,CWND)
      • Congestion Window 초기값: 1MSS
        • MSS(1460bytes) = MTU(1500) - IP헤더길이(20) - TCP헤더길이(20)
        • MTU(Maximum Transmission Unit): 한번 전송때 보낼 수 있는 최대 단위(보통 1500bytes)
    • AIMD(Additive Increase/Multicative Decrease) Algorithm
      • 처음 CWND = 1
      • ACK가 도착하면(패킷 전송 성공) -> CWND += 1
      • ACK가 일정시간동안 도착하지 않음(패킷 전송 실패) CWND *= 2
    • AIMD의 느린 초기송신을 보완하기 위해 아래 2개 알고리즘을 같이 사용
      • 느린 시작(Slow Start) Algorithm
        • 일반적으로 처음 CWND = 1
        • ACK가 도착하면(패킷 전송 성공) -> CWND += 1
        • ACK가 일정시간동안 도착하지 않음(패킷 전송 실패) CWND = 1 (초기 값)
      • 혼잡 회피(Congestion Avoidance) Algorithm
        • CWND가 일정 크기에 도달하면 ACK 도착시(패킷 전송 성공) - > CWND += 1


HTTP

  • HTTP(HyperText Transfer Protocol): 인터넷상에서 정보를 주고 받는 프로토콜
  • Server/Client 모델로 Request/Response 사용
    • Client에서 요청(Request)을 보내면, Server에서 응답(Response)
  • Method(Request)
    • GET:정보 읽기
      • 전달이 필요한 파라미터들은 URL을 통해 전달
    • POST: 정보 입력하기
      • 전달이 필요한 파라미터들은 HTTP body에 포함되어 전달
      • 사용자는 직접적인 확인 불가
    • PUT: 정보 수정하기
    • DELETE: 정보 삭제하기
  • 주요 HTTP 응답코드
상태코드 상태메세지 의미
200 OK 정상
400 Bad Request 유효하지 않은 파라미터 또는 잘못된 요청
401 Unauthorized 승인되지 않은 엑세스
403 Forbidden 엑세스 금지
404 Not Found 리소스를 찾을 수 없음
500 Internal Server Error 내부 서버 오류


쿠키(Cookie)와 세션(Session)

  • HTTP는 Stateless: 통신이 끝나면 상태를 유지하지 않음
  • 이를 보완하기 위한 기법이 쿠키와 세션
  쿠키(Cookie) 세션(Session)
저장 위치 클라이언트(접속자PC) 웹 서버
저장 형식 text Object
만료 시점 쿠키 저장시 설정
(브라우저가 종료 되도 만료 시점이 지나지 않으면 자동 삭제되지 않음)
브라우저 종료시 삭제
(expires 설정시 기간 지정 가능)
속도 세션보다 빠름 쿠키보다 느림
보안 세션보다 안좋음 쿠키보다 좋음


URL

  • Uniform Resource Locator
  • 인터넷 상의 자원 위치 표기를 위한 규약


URL vs URI

  • URI(Uniform Resource Identifier): 통합 자원 식별자
1
2
URI : https://www.google.com/index.html?id=test&pw=1111
URL : https://www.google.com/index.html


HTTPS

  • HyperText Transfer Protocol over Secure Socket Layer

  • HTTP 통신시 사용하는 TCP/IP 소켓 통신에서, 일반 텍스트 대신, SSL 또는 TLS 프로토콜을 통해 데이터 암호화하여 송수신
    • SSL / TLS
      • 넷스케이프사에서 개발한 암호화 프로토콜
      • 국제 표준화하는 과정에서 SSL이 상용제품 이름과 동일하여, TLS로 이름을 변경
  • HTTPS 기본 포트: 443
  • Scheme: https://


REST

  • 자원(resource)의 표현(representation)에 의한 상태 전달
  • HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 자원에 대한 CRUD Operation 적용
  • CRUD Operation
    • Create : 생성(POST)
    • Read : 조회(GET)
    • Update : 수정(PUT)
    • Delete : 삭제(DELETE)


REST API

  • REST 기반으로 서비스 API를 구현한 것
  • 최근 OpenAPI(누구나 사용하도록 공개된 API), 마이크로 서비스 등에서 많이 사용


Restful

  • 개발자들 사이에서 비공식적으로 가이드한 REST 구현 가이드
  • 기능에 적합한 URL Method 사용
  • URL Rules
    1. 소문자를 사용한다.
    2. 언더바(_) 대신 하이픈(-)을 사용한다.
    3. 마지막에 슬래시(/)를 포함하지 않는다.
    4. 행위(Method)는 URL에 포함하지 않는다.

댓글남기기