파게로그
2021. 9. 27 본문
TCP(Transmission Control Protocol) vs UDP(User Datagram Protocol)
OSI Model (7 Layers)
물리 계층
기능: 비트 스트림 전송
프로토콜: RS-232
장비: hub, repeater
데이터링크 계층
기능: 데이터 전송 오류 감지, 오류 시 재전송, MAC 주소를 통해 통신
프로토콜: HDLC, PPP, 프레임 릴레이, ATM
장비: 스위치, 브리지
네트워크 계층
기능: 주소(IP) 정하기, 경로(Route) 선택, 패킷 전달. 네트워크 라우팅
프로토콜: IP, ARP, RARP, ICMP, IGMP, ...
장비: 라우터, L3 스위치
전송 계층
기능: 전송 속도 조절. 오류 처리. 헤더에 송,수신지 포트번호를 포함하여 세션 계층에 전달
프로토콜: TCP, UDP, ...
장비: L4 스위치
세션 계층
기능: 세션 생성, 유지, 종료. 중단 시 복구. 포트 기반으로 구성하여 연결됨
프로토콜: PRC, NetBIOS, ...
표현 계층
기능: 데이터 인코딩 및 디코딩. 응용프로그램에 맞추어 변환
프로토콜: JPEG, MPEG, ...
응용 계층
기능: 사용자 및 어플리케이션이 네트워크에 접근할 수 있도록 함. 정보 교환, 파일 전송 등
프로토콜: HTTP, FTP, SMTP, POP3, IMAP, Telnet, ...
장비: L7 스위치
TCP
"보내고 확인받는다." → 신뢰성이 요구되는 어플리케이션에서 사용
· 연결지향형 프로토콜
· 바이트 스트림을 통한 연결
· 순서보장 O
· 패킷: 세그먼트
· 용도: 주로 HTTP, Email, 파일 전송
· 1:1(unicast) 통신(socket 한 쌍끼리의 통신, point-to-point)
1. 송신 포트(16비트)
2. 수신 포트(16비트)
3. sequence number
SYN n → AC n+1
4. acknowledgement number
수신자가 예상하는 다음 시퀀스 번호
5. data offset
TCP 헤더의 크기값 = 해당 세그먼트에서 데이터의 시작 위치
TCP Options 필드의 길이가 고정되어 있지 않기 때문에 필요
32비트 워드 단위(1word=4bytes) 최소:5word(20B) 최대:15word(60B)
6. reserved
Data Offset과 flags 사이 3비트짜리 빈 칸. 미래를 위해 예약된 필드. 모두 0으로 채워짐
7. flags
실제로는 9개(NS, CWR, ECE, URG, ACK, PSH, RST, SYN, FIN)
자세히 몰라도 되는 수준
8. window size
한 번에 전송할 수 있는 데이터의 양
최대크기는 2^16 = 65535B = 64KB
옵션 필드의 WCALE 필드를 사용해 왼쪽으로 시프트해서 더 큰 값을 표기
9. checksum
checksum 계산방법
1. 전송할 데이터를 16bit씩 나눠서 차례대로 더해나감 (4bit로표현하면... 1001+1111=11000)
2. 만약 자리수가 올라가 넘쳤다면, 이 부분만 떼어내서 계산결과에 다시 더해준다(1000+1 = 1001): warp around
3. 계산결과에 1의 보수를 취함(1001 -> 0110)
수신 측은, 데이터를 받아 2.번까지 과정만 수행하여, 송신 측의 checksum과 더해 모든 비트가 1이 되는지 확인
흐름 제어(flow control): 패킷의 크기를 조절
- 데이터 처리 속도를 조절하여 수신자의 buffer overflow를 방지
- 수신자가 window size 값을 통해 수신량을 결정(receiver-driven: receive buffer의 available space에 의해 좌우됨)
혼잡 제어(congestion control): 패킷을 밀어넣는 속도를 조절
- 네트워크 내의 패킷 수가 지나치지 않도록 함
- Network-assisted congestion control(라우터가 상황을 제공. 실제로는 구현되지 않음)
- End-end congestion control(채택. 관찰되는 loss, delay로부터 네트워크 상황 유추)
1. slow start
exponential 증가
2. additive increase
threshold 이후 linear 증가
3. multiplicative decrease
packet loss 이후 window size를 절반으로 감소
threshold를 CongWin/2로 설정
- CongWin의 단위는 MSS(Maximum Segment Size) = 500B
cf. 패킷 유실 탐지(timeout, 3 dup ACK) 중 3 dup ACK는 비교적 나은 상황이니... TCP Tahoe vs TCP Reno
cf. timeout일 때는 1부터, 3 dup ACK일 때는 절반부터 시작하도록, 동작에 차이를 두는 방향으로 개선한 것
reliable transmission
- DupACK-based retransmission
- AKC 값이 중복으로 올 경우, 패킷 이상을 감지하고 재전송을 요청함
timeout-based retransmission
- 일정시간동안 ACK를 수신하지 못하면 재전송을 요청함
연결형 서비스
TCP 연결 생성(3-way handshake)
1. open( )을 실행한 클라이언트가 SYN을 보내고, SYN_SENT 상태로 대기
2. 서버는 SYN_RCVD 상태로 바뀌고, SYN과 응답 ACK를 보냄
3. SYN, ACK를 수신한 클라이언트는 ESTABLISHED 상태로 바뀌고, 서버에게 응답 ACK를 보냄
4. ACK를 받은 서버는 ESTABLISHED 상태로 바뀜
TCP 연결 해제(4-way handshake)
1. close( )를 실행한 클라이언트가 FIN을 보내고, FIN_WAIT1 상태로 대기
2. 서버는 CLOSE_WAIT로 바뀌고, 응답 ACK를 전달. + 해당 포트에 연결된 어플리케이션에 close( )를 요청
3. ACK를 받은 클라이언트는 상태를 FIN_WAIT2로 변경
4. close( ) 요청을 받은 서버 어플리케이션은 종료 프로세스를 진행하고, FIN을 클라이언트에 보내고, LAST_ACK 상태로 바뀜
5. FIN을 받은 클라이언트는 ACK를 서버에 다시 전송하고, 상태를 TIME_WAIT로 변경.
TIME_WAIT에서 일정 시간이 지나면 CLOSED가 된다.
6. ACK를 받은 서버도 포트를 CLOSED로 닫는다.
close( )는 클라이언트가 아니라 서버가 먼저 보낼 수도 있다.
UDP
"보내고 나면, 거들떠 보지 않는다..."
신뢰성보다 속도를 요구하는 어플리케이션에서 사용
· 비연결지향형 프로토콜
· 메시지를 통한 연결(데이터의 의미적, 논리적 단위. 자체적으로 데이터의 시작과 끝을 구분함)
· 순서보장 X
· 패킷: 데이터그램
· 패킷 구조:
64비트(송신포트번호 16bit, 수신포트번호 16bit, UDP length(header+data), UDP checksum)
· 용도: 주로 DNS, broadcasting
· 1:1(unicast), 1:다(broadcast), 다:다(multicast) 통신
HTTP(Hypertext Transfer Protocol) vs
HTTPS(Hypertext Transfer Protocol Secure)
데이터 암호화 및 무결성 제공
"SSL(Secure Socket Layer)"
↓ 현재는 TLS로 대체. 사실상 같음
"TLS(Transport Layer Security, 전송 계층 보안)"
HTTP
(●'◡'●) 특징
상태를 가지고 있지 않는(stateless) 프로토콜
(●'◡'●) 동작과정
1. 기본 포트인 80번 포트에서 서비스 대기
2. 클라이언트(웹 브라우저)가 TCP 80 포트를 사용해 연결
3. 서버는 요청에 응답하면서 텍스트 데이터를 전송함
HTTPS
(●'◡'●) 용어
공개 키 방식(RSA 알고리즘 이용)
공개 키: 모두에게 공개 가능한 키
개인 키: 나만 알고 있어야 하는 키
공개 키 암호화: 공개키로 암호화하면, 개인키로만 복호화 할 수 있음(나만 볼 수 있음)
개인 키 암호화: 개인키로 암호화하면, 공개키로만 복호화 할 수 있음(내가 인증한 정보임을 알려 신뢰성을 보장)
대칭 키 방식
키를 사용하여 암호화하며, 동일한 키로 암호화 및 복호화가 모두 가능함
대칭키는 매번 랜덤으로 생성되고 사용 후 폐기됨
공개 키 방식보다 빠르게 통신할 수 있음
단점
1. 인증서 발급 및 유지를 위한 추가 비용 발생
2. 암호화 및 복호화 오버헤드 발생(미미함)
동작과정 등
이론
https://jeong-pro.tistory.com/89 (알고리즘: https://cryptocat.tistory.com/3)
실제
https://dodonam.tistory.com/74
요약
why? RSA 알고리즘을 이용한 암호화는 CPU 자원의 소모가 크다.
how? 대칭키를 일단 한 번 공유하는데, 그 때 RSA를 이용. 그 후 실제 통신 시에는 대칭키 방식으로 데이터를 주고받음.
세션이 닫힐 때 대칭키 폐기
참고
https://developer.mozilla.org/ko/docs/Glossary/TLS
'콤퓨타 왕왕기초 > PS' 카테고리의 다른 글
[백준 9935번] 문자열 폭발 (0) | 2021.10.03 |
---|---|
위상정렬(topological sorting) (0) | 2021.10.02 |
[백준 3687번] 성냥개비 (0) | 2021.09.23 |
[백준 16724번] 피리 부는 사나이 (1) | 2021.09.17 |
[자료구조] 트라이(Trie) (0) | 2021.09.13 |