반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

멋진 개발자가 되고 싶다

[네트워크] TCP 통신이란? 본문

Android/개발 관련 팁

[네트워크] TCP 통신이란?

오패산개구리 2021. 7. 15. 17:35
728x90
반응형

네트워크는 

 

Network Interface, Internet, Transport, Application

 

4개의 계층으로 나뉜다.

 

Transmission Control Protocol의 약자인 TCP는

 

UDP와 함께 Transport 계층의 대표적인 프로토콜이다.

 

TCP는 웹이나 이메일같이 데이터가 정확하게 전달되어야 하는 통신에 사용된다.

 

통신을 맺고 끊는 과정에서 Client와 Server 간에 확인 절차를 거치는데

 

이러한 특징으로 연결지향(Connection Oriented) 프로토콜이라고 한다.

 

UDP는 VoIP나 동영상 스트리밍같이 전송 속도가 빨라야 하는 통신에서 사용한다.

 

TCP와는 달리 연결을 맺지 않고 한 쪽에서 일방적으로 데이터를 보낸다.

 

따라서 이러한 특징을 비연결지향(Connectionless) 프로토콜이라 부른다.

 

 

 

TCP 통신

 

TCP는 데이터 전송에 신뢰성을 더하기 위해 데이터를 세그먼트 단위로 분할하고,

 

전송 속도를 조절하며, 데이터가 제대로 전달되지 않았을 경우 재전송한다.

 

TCP의 세그먼트는 데이터 본체에 TCP header가 붙은 형태로 구성된다.

 

TCP header에는 포트번호나 일련번호 등 정보가 포함된다.

 

 

 

TCP 소켓으로 클라이언트와 서버가 연결되는 과정은

 

커넥션을 3단계에 걸쳐 맺는 3way handshake 방식으로 진행된다.

 

TCP가 통신을 맺는 과정은 다음과 같다.

 

 

1) 클라이언트는 서버에 접속 요청(sync)을 하고 클라이언트는 sync_sent 상태가 됨.

 

2) 서버는 요청 수락(sync+ack)을 하고 서버는 sync_received 상태가 됨.

 

3) 클라이언트는 서버에 수락 확인(ack)를 보내고 서버는 established 상태가 됨.

 

 

 

 

TCP가 연결을 끊는 과정은 4way handshake라고 한다.

 

TCP가 연결을 끊는 과정은 다음과 같다.

 

 

1) 클라이언트가 서버에 연결을 종료(FIN) 플래그를 전송, 클라이언트는 종료 신호를 기다리는 상태(FIN_WAIT1)

 

2) 서버는 일단 확인(ACK)했다는 메시지를 보내고 자신의 통신이 끝날 때까지 기다리게 함. 서버는 CLOSE_WAIT 상태. 클라이언트는 종료 신호를 기다리겠다는 FIN_WAIT_2로 상태 전환.

 

3) 서버가 통신이 끝나면 이제 종료해도 된다는 FIN 플래그를 클라이언트에 전달. 서버는 LAT_ACK 상태로 전환, 클라이언트는 TIME_WAIT 상태로 전환.

 

4) 클라이언트는 연결 종료를 확인했다는 응답(ACK) 플래그를 보냄. 서버 상태는 CLOSED.

 

728x90
반응형