-
[Network] TCP와 UDPCS/Network 2021. 7. 15. 23:37
📝 TCP와 UDP
✨ 해당 글은 아래 [10분 테코톡]을 듣고 작성했습니다.✨
📌 Transport Layer
🔎 전송 계층?
- End Point간 신뢰성있는 데이터 전송을 담당하는 계층이다.
- 신뢰성: 데이터를 순차적, 안정적으로 전달한다.
- 전송: 포트 번호에 해당하는 프로세스에 데이터를 전달한다.
🔎 전송 계층이 없다면 어떻게 될까?
- 데이터의 순차적 전송을 원활히 할 수 없다.
- 송신자의 의도대로 데이터를 전달하지 못할수도 있다.
- 흐름 문제(Flow)
- 송 수신간에 데이터 처리 속도에 차이 때문에 발생한다.
- 만약 수신자가 처리할 수 있는 데이터량을 초과한다면 데이터가 손실될 수 있다.
- 혼잡 문제(Congestion)
- 네트워크의 데이터 처리 속도로 인해 발생한다.
- 현재 네트워크가 혼잡할 때 통신이 제대로 되지 않아 발생한다.
📌 TCP
🔎 Transmission Controle Protocol
- 신뢰성 있는 통신을 가능하게 해주는 Transport Layer의 protocol이다.
- connect을 연결하여 통신한다. 이 내용은 뒤에서 자세히 알아보자.
- 데이터의 순차적 전송을 보장한다.
- 흐름 제어 기능을 제공한다.
- 혼잡 제어 기능을 제공한다.
- 오류 감지 기능을 제공한다.
🔎 TCP 헤더에 대해 알아보자.
- 먼저 TCP헤더의 요소에 대해 알아보자.
- 출발지의 포트번호
- 목적지의 포트번호
- Sequence Number, Acknowledgement Number: 데이터의 순차적 전송을 보장하기 위한 번호
- flags: 제어비트. TCP 세그먼트의 종류를 표시한다.
- checksum: 오류 검출용 비트
- Flags의 종류중에 중요한 것 몇가지를 알아보자.
- SYN: connection연결 요청시 사용한다.
- FIN: 연결 해제 요청시 사용한다.
- ACK: 요청에 대한 응답을 할때 요청을 잘 받았다는 의미로 사용한다.
🔎 TCP의 Connection을 연결하고, 데이터를 전송하고, 연결을 해제하는 과정을 알아보자.
- 연결요청 3-way-handshaking
- A가 SYN 비트를 1로 설정해 B로 패킷 송신
- B가 SYN, ACK 비트를 1로 설정해 A로 패킷 송신
- A가 ACK 비트를 1로 설정해 B로 송신
- ESTABLISHED (연결됨)
- 데이터 전송
- A가 B로 패킷을 송신
- B에서 ACK 비트를 1로 설정해 A로 송신
- A가 ACK를 받지 못하면 재전송
- 연결해제 4-way-handshaking
- 데이터를 전부 송신한 A가 FIN 비트를 송신
- B가 ACK 비트를 A로 송신
- B는 A의 남은 패킷을 송신할때까지 대기
- B가 FIN 비트를 A로 송신
- A가 ACK 비트를 B로 송신
- CLOSED (연결 해제됨)
🔎 TCP의 문제점은 없을까?
- 전송의 신뢰성은 보장하지만 다음과 같은 문제점이 있다.
- 매번 connection을 연결해서 시간적 손실이 발생한다. (3-way-handshaking)
- 패킷을 조금만 손실해도 재전송한다.
📌 UDP
🔎 User Datagram Protocol
- TCP보다 신뢰성이 떨어지지만 전송 속도가 TCP에 비해 빠른 Transport Layer의 protocol
- connectionless. 연결 요청-해제 과정이 필요 없다.
- 에러 검출 기능만 있다.
- 비교적 데이터 신뢰성이 중요하지 않을 때 사용한다. (ex. 영상 스트리밍)
🔎 UDP 헤더에 대해 알아보자.
- UDP헤더 요소에 대해 알아보자.
- 출발지의 포트번호
- 목적지의 포트번호
- checksum: 오류 검출용 비트
✍ TCP, UDP에 대해 알아야 하는 이유!- TCP, UDP의 특성을 파악하고 상황에 따라 적절한 프로토콜을 사용할 수 있어야 한다.
- TCP, UDP의 헤더에 대해 파악하고 성능 개선에 이용할 수 있어야 한다.
'CS > Network' 카테고리의 다른 글
Network - Dynamic Routing Protocol (0) 2021.03.11 Network - Routing (0) 2021.03.06 Network - 클라우드 (0) 2021.02.23 Network - VPN (0) 2021.02.21 Network - NAT (0) 2021.02.16