- 프로토콜(Protocol) : 데이터 통신규약
• 프로토콜 계층구조 - 크고 복잡한 시스템 구성 효율적 - 각 계층 독립적, 시스템 구성 요소 간 update 용이 |
1. Transport Layer
서로 다른 End system에서 동작하는 프로세스 간 논리적 통신을 제공하는 계층
인터넷 Transport layer 프로토콜에는 TCP와 UDP가 있다.
2. TCP (Transmission Control Protocol)
-
신뢰적 데이터 전송
데이터가 보낸 순서대로, 손실 없이, 반드시 도착한다.
-
흐름 제어 (flow control)
송신자가 수신자의 버퍼를 오버플로 시키는 것을 방지
송신자는 수신자의 처리속도에 맞춰서 데이터 전송
수신 애플리케이션이 읽는 속도와 송신자가 전송하는 속도를 같게 함
-
혼잡 제어 (congestion control)
네트워크 혼잡에 따라 전송률을 각 송신자가 제한
송신자가 자신과 목적지 간의 경로에서 혼잡이 없음을 감지하면, 송신자는 송신율을 높임
반면 송신자가 경로에서 혼잡을 감지하면, 송신자는 송신율을 줄임
-
전이중 (Full-duplex)
전송이 양방향으로 동시에 일어날 수 있음 (동시에 송수신 가능)
-
점대점 (point to point)
단일 송신자와 단일 수신자 사이의 연결
멀티캐스팅, 브로드캐스팅 불가능
-
연결 지향형
연결 설정
-
3-way handshake
1. TCP SYN
클라이언트가 서버에게 TCP 연결 요청 ( SYN=1 )
2. TCP SYN ACK
서버가 SYN 메시지를 받고, 확인했다는 ACK 보냄
연결에 관련된 송∙수신 버퍼와 변수 저장공간 할당, 연결 승인 ( SYN=1 )
3. TCP ACK
클라이언트가 SYN ACK 메시지를 받고, 확인했다는 ACK 보냄
연결에 관련된 송∙수신 버퍼와 변수 저장공간 할당, 연결 성립
연결 종료
-
4-way handshake
1. FIN
클라이언트가 서버에게 TCP 연결 종료 요청 ( FIN=1 )
2. ACK
서버는 FIN 메시지를 받고, 확인했다는 ACK 보냄
3. FIN
서버가 데이터를 모두 보냈다면, 클라이언트에게 TCP 연결 종료 요청 ( FIN=1 )
4. ACK
클라이언트는 FIN 메시지를 받고, 확인했다는 ACK 보냄
서버는 ACK 메시지 받으면 연결에 관련된 송∙수신 버퍼와 변수 저장공간 할당 해제, 연결 종료
클라이언트는 서버로부터 받지 못한 데이터가 있을 수 있으므로 대기
대기 시간이 끝나면 연결에 관련된 송∙수신 버퍼와 변수 저장공간 할당 해제, 연결 종료
3. UDP (User Datagram Protocol)
-
비연결형
데이터를 전송할 때 송수신 호스트 사이 연결 설정 X
송수신 버퍼, 순서번호, 확인응답 번호 파라미터 등 연결 상태 X
-
빠른 데이터 전송
연결 설정 X, 흐름제어 X, 혼잡제어 X ⇒ delay 발생하지 않음
-
작은 헤더 크기
TCP는 기본 20바이트의 헤더, UDP는 8바이트의 헤더
4. TCP vs UDP
어떤 application 서비스 개발인지에 따라 TCP, UDP 선택
- TCP - 신뢰적인 데이터 전송이 중요한 application (ex. E-mail, 파일전송 …)
- UDP - 빠르고 간단한 데이터 전송이 중요한 application (ex. 멀티미디어 스트리밍, DNS …)
[참고자료]
Kurose & Ross, 「Computer Networking : A Top-Down Approach 7th Edition」
'GDSC Sookmyung 활동 > 10 min Seminar' 카테고리의 다른 글
파이썬으로 웹 스크래핑 시작하기 (0) | 2021.02.23 |
---|---|
사람의 지도 없이 학습하는 오토인코더 (1) | 2021.02.21 |
Yolact로 이미지 딥러닝하기 (0) | 2021.02.15 |
GAN(Generative Adversarial Network) (1) | 2021.02.08 |
Flutter 소개와 Firebase 연동 (0) | 2021.01.24 |