네트워크
네트워크(Network)
- 컴퓨터간 통신을 의미
- 파일 송수신, 웹 사이트, 이메일 열람 등
- 컴퓨터간 통신을 위한 규칙이 있음
네트워크 구분
- LAN(Local Area Network): 건물 등 특정 지역을 범위로 하는 네트워크
- WAN(Wide Area Network): 인터넷 서비스 제공자(ISP)등이 제공하는 광역 네트워크
- WLAN(Wireless Local Area Network): 무선 근거리 네트워크
OSI 7 Layer
- 프로토콜 : 컴퓨터간 통신을 하기 위한 규칙
- 헤더(Header): 계층을 지날때 추가, 해당 계층의 기능과 관련된 제어 정보가 포함
- 캡슐화(Encapsulation)
- 계층을 지날 때마다 제어 정보 추가
- 역캡슐화(Decapsulation)
- 계층을 지날때마다 제어 정보 제거
- 용어 정리
- 패킷(packet): 네트워크 계층에서 정의되는 데이터 단위
- 프레임(frame): 데이터링크 계층에서 정의되는 데이터 단위
- 체크섬(checksum): 전송 계층에서 데이터 전송중 손상/유실 확인을 위한 오류 점검 기능
계층 | 이름 | 역할과 기능 | 프로토콜 |
---|---|---|---|
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데이터는 데이터그램이라고 부름(패킷으로 부르지 않음)
포트(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 모델
인터넷 프로토콜(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)
TCP 연결 방식
- 3-Way 핸드쉐이크(handshake): TCP 통신을 위한 연결 설명 과정
- 4-Way 핸드쉐이크(handshake): TCP 연결 해제 과정
- 최근에는 FIN/ACK를 동시에 보냄
TCP 전송
- Sequence Number
- 일정 단위로 데이터를 분할해서 전송
- 송신측에서 수신측에 데이터가 몇 번째 데이터인지를 알려줌
- ACK Number
- 다음 번호의 데이터를 알려줌(어디까지 수신했는지 확인 가능)
TCP 제어
-
흐름제어(Flow Control)
-
송신 측과 수신 측의 데이터 처리 속도가 다를 수 있다.
송신 측이 빠를 때 수신 측 버퍼가 넘치는 오버플로우 문제가 발생
이러한 문제를 줄이기 위해 윈도우 크기로 송신 측의 데이터 전송량을 조절
-
Sliding Window Algorithm
- 송신측과 수신측 모두 자신의 윈도우 사이즈(버퍼 크기)를 적절한 사이즈로 설정
- 통신 과정 중에도 네트워크 혼잡 등의 조건을 통해 윈도우 크기는 유동적으로 설정된다
- 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)
- 송신 제어를 위한 윈도우는 2개
- 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
- 느린 시작(Slow Start) Algorithm
HTTP
- HTTP(HyperText Transfer Protocol): 인터넷상에서 정보를 주고 받는 프로토콜
- Server/Client 모델로 Request/Response 사용
- Client에서 요청(Request)을 보내면, Server에서 응답(Response)
- Method(Request)
- GET:정보 읽기
- 전달이 필요한 파라미터들은 URL을 통해 전달
- POST: 정보 입력하기
- 전달이 필요한 파라미터들은 HTTP body에 포함되어 전달
- 사용자는 직접적인 확인 불가
- PUT: 정보 수정하기
- DELETE: 정보 삭제하기
- GET:정보 읽기
- 주요 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로 이름을 변경
- 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
- 소문자를 사용한다.
- 언더바(_) 대신 하이픈(-)을 사용한다.
- 마지막에 슬래시(/)를 포함하지 않는다.
- 행위(Method)는 URL에 포함하지 않는다.
댓글남기기