1. TCP, UDP
: 네트워크 계층 중 전송 계층에서 사용하는 프로토콜
데이터의 전달을 위해 사용되는 프로토콜
1) TCP(Transmission Control Protocol)
- 연결지향 : 데이터 전송 전 송/수신자 연결하는 '핸드셰이크' 과정 필요
- 신뢰성 있는 전송 : 패킷 손실 / 중복 / 순서 바뀜 감지 -> 수정 가능, 패킷 성공 도착 여부는 ACK로 확인
- 흐름제어 / 혼잡제어 : 송신자가 수신자 처리 능력 초과하지 않게 + 네트워크 혼잡 줄이기 위한 매커니즘 포함
(* 흐름제어 : 송신자가 데이터를 너무 빨리 보내서 수신자가 이를 처리하지 못하는 상황 방지)
(* 혼잡제어 : 네트워크 과부하 방지)
- 데이터 스트림 : 데이터가 연속적인 바이트 스트림으로 작동
사용 예시 : 웹 브라우징, 이메일, 파일 전송, 원격 로그인
-> 신뢰성, 순서 보장 필요
2) UDP(User Diagram Protocol)
- 비연결형 : 데이터 전송 전 연결 설정 안함
- 신뢰성 없음 : 데이터 패킷 도착 여부 확인 안함, 패킷 손실 / 중복 / 순서 바뀜 감지 x 수정 x (대신, 손상 데이터는 무시할 수 있음! 데이터그램의 체크섬으로 손상여부 확인)
- 저지연 : TCP에 비해 오버헤드 적어 지연이 적음
(* 오버헤드 : 실제 유용한 data의 추가 발생 데이터, 처리시간)
- 데이터그램 : 각 패킷 독립적 전송
사용 예시 : 스트리밍 서비스, 온라인 게임, 실시간 app, 멀티 캐스트 전송
-> 지연이 적어야 할 때
Q. 스트리밍은 연속적으로 작동하는 TCP가 맞는거 아닌가?
: 지연이 있으면 버퍼링으로 사용자가 눈치 챌 수 있기 때문에 UDP가 적합.
손실을 허용하지만, 프레임이 몇 개 손실되어도 사용자 경험에 큰 영향은 미치지 않음
2. TCP의 3-way/4-way hand shake
1) 3-way hand shake
: TCP 연결 설정, 데이터의 안정적 전송이 가능해짐.
1단계) Client -> Server (SYN)
Client가 Server에게 연결 요청하는 SYN 플래그가 설정된 패킷을 보냄.
(* SYN : TCP 연결 설정 시작하는 초기화 메시지)
2단계) Server -> Client (SYN-ACK)
Server는 Client의 요청을 받고, 연결 수락 신호로 응답.
(* ACK : 요청을 성공적으로 수신했음을 알리는 응답 메시지)
3단계) Client -> Server (ACK)
Client는 Server의 응답 받고, 연결 요청 확인 패킷 보냄.
2) 4-way hand shake
: TCP 연결 해제
1단계) Client -> Server (FIN)
: Client가 연결 종료를 위해 FIN 플래그 설정한 패킷을 Server로 보냄
(* FIN : 전송이 완료 되었거나, 더이상 전송할 데이터가 없을때 연결 종료 의도를 알림)
2단계) Server -> Client (ACK)
Server는 Client의 FIN패킷 받고, 확인 위해 ACK 패킷 보냄
-> Server는 Client가 연결을 종료하려는 것을 알게 됨.
3단계) Server -> Client (FIN)
Server도 연결 종료를 위해 FIN 플래그 설정한 패킷을 Client로 보냄
4단계) Client -> Server (ACK)
Client는 Server의 FIN패킷 받고, 확인 위해 ACK 패킷 보냄
-> Client는 Server 연결을 종료하려는 것을 알게 됨.
'스터디 > CS 스터디 (24.06-24.11)' 카테고리의 다른 글
컴퓨터 구조 : 컴퓨터 시스템 설계 방식(폰노이만 구조/하버드 구조) (0) | 2024.08.05 |
---|---|
네트워크 : HTTP/HTTPS, TLS/SSL , 브라우저 저장소(쿠키/웹스토리지) (1) | 2024.07.09 |
네트워크 : OSI 7계층 (0) | 2024.07.09 |
OS : 프로그램, 프로세스, 스레드, 멀티 프로세싱 vs 멀티 태스킹 (0) | 2024.07.04 |
OS : 시스템 콜 (1) | 2024.07.01 |