OSI 7계층
물리(physical)
리피터, 케이블, 허브 등
데이터 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간
데이터를 전송하는 역할
데이터 링크(data link)
브릿지, 스위치 등
물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할
Mac 주소를 통해 통신
프레임에 Mac 주소를 부여하고 에러검출, 재전송, 흐름제어를 진행
네트워크(network)
라우터, IP
데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능 담당
라우터를 통해 이동할 경로를 선택하여 IP 주소를 지정하고, 해당 경로에 따라 패킷 전달
라우팅, 흐름제어, 오류제어, 세그멘테이션 등 수행
전송(transport)
TCP, UDP
TCP와 UDP 프로토콜을 통해 통신 활성화
포트를 열어두고 프로그램들이 전송을 할 수 있도록 제공
TCP : 신뢰성, 연결지향적
UDP : 비신뢰성, 비연결성, 실시간
세션(session)
API, Socket
데이터가 통신하기 위한 논리적 연결 담당
TCP/IP 세션을 만들고 없애는 책임을 지님
표현(presentation)
JPEG, MPEG 등
데이터 표현에 대한 독립성을 제공하고 암호화하는 역할 담당
파일 인코딩, 명령어 포장, 압축, 암호화
응용(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는 정확한 전송을 보장해야 한다.
통신하기에 앞서, 논리적인 접속을 성립하기 위해 해당 과정 진행
클라이언트가 서버에게 SYN 패킷 전송 (sequence : x)
서버가 SYN(x)을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보냄
클라이언트는 서버의 응답은 ACK(x+1)와 SYN(y) 패킷을 받고, ACK(y+1)을 서버로 보냄
4-way handshake - 연결 해제
연결 성립 후, 모든 통신이 끝났다면 해제해야 한다.
클라이언트는 서버에게 연결을 종료한다는 FIN 플래그를 보냄
서버는 FIN을 받고, 확인했다는 ACK를 클라이언트에게 보냄 (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태)
데이터를 모두 보냈다면, 연결이 종료되었다는 FIN 플래그를 클라이언트에게 보냄
클라이언트는 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 주소를 수신하는 데 사용되는 프로토콜
- 컬렉션 아티클