-
TCP / UD💻 computer science/🌐 network 2022. 10. 9. 19:28
TCP (Transmission Control Protocol)
💡 인터넷 상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
특징
- 연결 지향형 프로토콜 (1:1 연결)
- 3-way handshaking 과정을 통해 연결 설정, 4-way handshaking 을 통해 해제
- 높은 신뢰성 보장
- 흐름 제어 및 혼잡 제어
- 전이중, 점대점 방식
3-way handshaking
클라이언트와 서버가 통신할 때 3단계의 과정을 거친다.
- SYN 단계
- 클라이언트 → 서버
- ISN을 담아 SYN을 보낸다.
- SYN + ACK 단계
- 클라이언트의 SYN을 수신하고 서버의 ISN을 보낸다.
- 승인번호로 클라이언트의 ISN + 1을 보낸다.
- ACK 단계
- 클라이언트는 서버의 ISN + 1한 값을 승인번호로 담아 ACK를 서버에 전송
위 과정 이후 신뢰성이 구축되고 데이터 전송 시작
4-way handshaking
TCP가 연결을 해제할 때는 4-way handshake 과정이 발생한다.
- 클라이언트가 서버에 FIN으로 된 세그먼트를 보낸다.
- 서버는 ACK라는 승인 세그먼트를 클라이언트에게 보낸다.
- 서버는 ACK를 보내고 일정 시간 후에 클라이언트에 FIN이라는 세그먼트를 보낸다.
- 클라이언트는 서버에 ACK를 보내고 어느 정도 대기 한후 연결이 닫히고 서버와 클라이언트는 연결이 해제된다.
❓ 클라이언트는 서버에게 FIN 세그먼트를 받고 왜 일정기간 대기를 할까
- 지연 패킷이 발생할 경우를 대비하기 위함
- 패킷이 뒤늦게 도달하고 이를 처리하지 못하면 데이터 무결성 문제가 발생
- 두 장치가 연결이 닫혔는지 확인하기 위함
- 서버가 Closed 상태가 안됐을 수도 있어서 어느 정도 기다린다.
흐름 제어
송신하는 곳에서 감당이 안될 정도로 데이터를 빠르게 보내면 수신자에게 문제가 발생한다.
- 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절해 수신자의 버퍼 오버플로우를 방지한다.
혼잡 제어
네트워크 내 패킷 수가 넘치게 증가하지 않도록 방지한다.
- 패킷 수가 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나지 않도록 한다.
버퍼 오퍼플로우
Buffer의 경계를 체크하지 않고, 크기를 넘어서는 데이터 입력을 받아 들였을 때 생기는 문제UDP (User Datagram Protocol)
비 연결 지향형 프로토콜
- 데이터를 보낼 떄 연결 없이 일방적으로 보내는 방식
- 빠른 전송이 가능하지만 신뢰성을 보장하지 않는다.
특징
- 비연결형 서비스
- 연결없이 통신이 가능한 데이터그램 방식 제공
- Error detection
- 에러만 체크해준다.
- UDP 헤더의 checksum 필드를 통해 최소한의 오류만을 검출
- 1:1. 1:N, N:M
- 연결 가능
패킷을 순차적으로 보내도 패킷이 순서대로 도착하는 것을 보장 ❌
손실이 되어도 재전송 요청 ❌
UDP는 몇 개의 패킷이 도착하지 않더라도 빠른 전송속도가 중요한 곳에서 사용
참고자료
https://mangkyu.tistory.com/15?category=762469
https://www.youtube.com/watch?v=ikDVGYp5dhg&ab_channel=우아한Tech
'💻 computer science > 🌐 network' 카테고리의 다른 글
HTTPS (0) 2022.10.09 OSI 7 계층 과 TCP/IP 계층 (0) 2022.10.09 HTTP (0) 2022.10.09