CS 프로토콜(전송)
목차
- TCP와 UDP 설명과 비교
- TCP 3way handshaking 설명과 그 이유
- TCP가 신뢰성을 보장하는 방법
1. TCP와 UDP 설명과 비교
TCP와 UDP는 OSI 7 계층들 중 TCP/IP의 전송 계층에서 사용되는 프로토콜
* 전송 계층 : 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층
(데이터의 전달을 담당하며 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당)
* 패킷(Packer) : 인터넷 내에서 데이터 전송을 위한 라우팅을 효율적으로 하기 위해 나누어진 조각(→ 우편 패키지)
TCP(Transmission Control Protocol)
: 연결 지향적 프로토콜(클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜) …ex) 파일전송- 연결형 서비스로 가상 회선 방식을 제공(연결이 성공해야 통신이 가능함)
- 3-way handshaking 과정을 통해 연결을 설정하고,
- 4-way handshaking 과정을 통해 연결을 해제한다.
- 흐름 제어(Flow control)
- 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
- 혼잡 제어(Congestion control)
- 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지
- 높은 신뢰성을 보장
- 신뢰성이 높은 전송을 하기 때문에 UDP보다 속도가 느림
- 전이중(Full-Duplex), 점대점(Point to Point) 방식
- 전이중(Full-Duplex) : 전송이 양방향으로 동시에 일어날 수 있다
- 점대점(Point to Point) : 각 연결이 정확히 2개의 종단점을 가지고 있다
- 연결형 서비스로 가상 회선 방식을 제공(연결이 성공해야 통신이 가능함)
UDP(User Datagram Protocol)
: 비연결형 프로토콜(연속성 있는 전송이 필요할 때 사용하는 프로토콜) …ex) 실시간 서비스(Streaming)- 비연결형 서비스로 데이터그램 방식을 제공
- 데이터의 전송 순서가 바뀔 수 있음
- 데이터 수신 여부를 확인하지 않음
- TCP의 3-way handshaking과 같은 과정 X
- 신뢰성이 낮음
- 흐름 제어(flow control)가 없어서 제대로 전송되었는지, 오류가 없는지 확인할 수 없음
- TCP보다 속도가 빠름
- 1:1 & 1:N & N:N 통신이 가능
- 비연결형 서비스로 데이터그램 방식을 제공
TCP와 UDP 비교하기
프로토콜 종류 TCP UDP 연결 방식 연결형 서비스 비연결형 서비스 패킷 교환 방식 가상 회선 방식 데이터그램 방식 전송 순서 전송 순서 보장 전송 순서가 바뀔 수 있음 수신 여부 확인 수신 여부를 확인함 수신 여부를 확인하지 않음 통신 방식 1:1 통신 1:1 OR 1:N OR N:N 통신 신뢰성 높다 낮다 속도 느리다 빠르다
2. TCP 3way handshaking 설명과 그 이유
- Client에서 Server에 연결 요청을 하기위해 SYN 데이터를 보내고 SYN_SENT 상태로 대기한다.
- Server에서 해당 포트는 LISTEN 상태에서 SYN 데이터를 받고 SYN-RECEIVED로 상태가 변경된다.
- 그리고 요청을 정상적으로 받았다는 대답(ACK)와 Client도 포트를 열어달라는 SYN 을 같이 보낸다.
- Client에서는 SYN+ACK 를 받고 ESTABLISHED로 상태를 변경하고 서버에 ACK 를 전송한다.
- ACK를 받은 서버는 상태가 ESTABLSHED로 변경된다.
* 상태설명
- SYN(synchronize sequence numbers) - 연결 확인을 보내는 무작위의 숫자 값 (내 말 들려?) – 요청
- ACK(acknowledgements) - Client 혹은 Server로부터 받은 SYN에 1을 더해 SYN을 잘 받았다는 ACK (잘 들려!) – 응답
- CLOSED : 연결 수립을 시작하기 전의 기본 상태 (연결 없음)
- LISTEN : 포트가 열린 상태로 연결 요청 대기 중
- SYN-SENT : SYN을 요청한 상태
- SYN-RECEIVED : SYN 요청을 받고 상대방의 응답을 기다리는 중
- ESTABLISHED : 연결 수립이 완료된 상태, 서로 데이터를 교환할 수 있다.
3. TCP가 신뢰성을 보장하는 방법
TCP 재전송
으로 신뢰성을 보장함- TCP는 그 특성상 자신이 보낸 데이터에 대해서 상대방이 받았다는 의미의 응답 패킷을 다시 받아야 통신이 정상적으로 이뤄졌다고 생각함
→ 응답 패킷을 받지 못한 경우 : 패킷이 유실되었다고 판단하여 보냈던 패킷을 다시 한 번 보냄 = 이 과정이 TCP 재전송 - if) 수신자가 송신자에게 ACK, NAK도 못보내는 상황
: timeout된 시점에서 다시 TCP Segment를 보내주게 됨(퍼포먼스 성능의 저하가 있을 수 있으므로 조심해야함)
출처