-
앱 서버로 API 를 호출 하면 몇번의 데이터 통신이 발생하나요 ? TCP/IP 원리 (2)CS-Theory/NetWork 2023. 7. 25. 15:22
만약 다음 질문이 들어오면 정답이 무엇일까?
Q : 안드로이드에서 서버로 api 를 호출 하면 몇번의 데이터 통신이 발생하나요 ?
TCP 원리 (1) 글에서는 TCP/IP 원리 설명중 데이터가 구체적으로 어떻게 해서 다른 컴퓨터에게 전달이 되며
패킷생성의 두가지 방식 및 패킷 스위칭의 과정을 설명했다.
이번 글에서는 Tcp 의 데이터의 신뢰성을 어떻게 보장을 하는지에 대한 설명이다.
우리는 앞서 IP 는 비 연결성 데이터그램 패킷 스위칭을 기반으로 작동한다라는 내용을 알았다.
데이터그램 패킷 스위칭은 각각의 패킷이 독립적으로 처리되므로 중간에 패킷이 손실되거나 순서가 바뀐다.
트렌스포트 계층에서 TCP 방식을 사용하여 안정적인 통신을 가능하게 한다.
가상 회선 패킷 교환 방식
데이터그램 패킷 교환 방식과는 다르게 데이터를 전송하기전에 논리적 연결을 설정하고, 각 패킷에는 가상 회선 식별 번호가 포함되며
라우터가 패킷마다 경로를 선택하는 데이터 그램과 다르게 , 경로를 한번만 수행을 하여 설정한다.
TCP 서비스는 송신자 수신자 각각 소켓을 생성하여 통신을 이루며 , TCP/IP 프로토콜 스택과 어플리케이션 계층 사이에서 데이터를 주고 받을 수 있도록 인터페이스를 제공하는 추상화된 개념이다.
TCP 에서 연결을 설정하고 해제를 하는 과정
0. 사전 준비
클라이언트 app 에서 송신을 위한 소켓을 생성한다. 이때 소켓은 클라이언트의 ip 주소 및 포트 번호를 가지고 있다.
서버 app 에서도 수신을 위한 소켓을 생성한다. 서버 소켓은 클라이언트의 연결 요청을 기다리는 상태로 대기한다.
1 . 연결 설정 : 3-way handshake : 3번의 통신이 발생한다.
- 클라이언트(Client)가 서버(Server)에 연결을 요청하는 과정입니다.
- 클라이언트는 서버에게 SYN(Synchronize Sequence Number) 패킷을 보냅니다. 이 SYN 패킷은 클라이언트가 초기 순서 번호를 세팅하여 서버와 통신을 시작하겠다는 것을 나타냅니다.
- 서버는 클라이언트의 SYN 패킷을 받고, 클라이언트에게 ACK(Acknowledgment)와 SYN 패킷을 함께 보냅니다. ACK는 클라이언트의 SYN 패킷을 받았다는 응답을, SYN은 서버가 초기 순서 번호를 세팅하여 클라이언트와 통신을 시작하겠다는 것을 나타냅니다.
- 클라이언트는 서버의 ACK와 SYN 패킷을 받고, ACK를 보내서 서버에게 수락했다는 응답을 보냅니다. 이로써 3-way handshake가 완료되고 연결이 성립됩니다.
2.연결 해제 : 4-way handshake : 4 번의 통신이 발생한다.
- 클라이언트와 서버 간의 연결을 해제하는 과정입니다.
- 클라이언트가 서버에게 연결을 종료하고자 FIN(Final) 패킷을 보냅니다.
- 서버는 클라이언트의 FIN 패킷을 받고, ACK를 보내서 클라이언트의 FIN 패킷을 확인했다는 응답을 합니다.
- 서버가 더 이상 보낼 데이터가 없으면, 서버는 자신의 데이터 전송을 모두 마쳤다는 FIN 패킷을 보냅니다.
- 클라이언트는 서버의 FIN 패킷을 받고, ACK를 보내서 서버의 FIN 패킷을 확인했다는 응답을 합니다.
Q : 안드로이드에서 서버로 api 를 호출 하면 몇번의 데이터 통신이 발생하나요 ?
A : http api 는 tcp/ip 를 사용한 통신 규약이기 때문에 총 9번의 데이터 통신이 발생합니다.
연결 설정을 위한 3 번의 통신 , api 호출 및 응답 각 1 회 , 연결 해제를 위한 4 번의 통신 총 9 번입니다.
[정리]
- 연결 설정을 위한 3번의 통신 (3-way handshake):
- 클라이언트가 서버에게 SYN 패킷을 보냄.
- 서버가 클라이언트에게 ACK와 SYN 패킷을 함께 보냄.
- 클라이언트가 서버에게 ACK 패킷을 보냄.
- API 호출 및 응답:
- 클라이언트가 서버에게 HTTP Request를 보냄 (1회 통신).
- 서버가 클라이언트에게 HTTP Response를 보냄 (1회 통신).
- 연결 해제를 위한 4번의 통신 (4-way handshake):
- 클라이언트가 서버에게 FIN 패킷을 보냄.
- 서버가 클라이언트에게 ACK 패킷을 보냄.
- 서버가 클라이언트에게 FIN 패킷을 보냄.
- 클라이언트가 서버에게 ACK 패킷을 보냄.
- 그럼 SYN 패킷은 어떻게 이루어져 있나요 ?
어,,,, ?
.. 이어서 설명 하는 포스팅
https://chosunghyun18.tistory.com/132
그럼 SYN 패킷은 어떻게 이루어져 있나요 ? TCP/IP 원리 (2)
그럼 SYN 패킷은 어떻게 이루어져 있나요 ? TCP Header 에 총 9bit 로 이루어진 TCP Flags 가 존재하며 이중 제어를 담당 하는 6bit가 있다. SYN-ACK 헤더 : 000010 자료 : https://cabulous.medium.com/tcp-3-way-handshake-and-
chosunghyun18.tistory.com
사진 자료
https://cabulous.medium.com/tcp-3-way-handshake-and-how-it-works-8c5f8d6ea11b
TCP 3-Way Handshake and How it Works
Handshake has a purpose — exchanging information to establish a connection.
cabulous.medium.com
'CS-Theory > NetWork' 카테고리의 다른 글
HTTP 가 뭔가요 ? Tomcat 의 요청가능한 최대 데이터 크기? (0) 2023.07.27 그럼 SYN 패킷은 어떻게 이루어져 있나요 ? TCP/IP 원리 (3) (0) 2023.07.27 TCP 가 뭔가요? TCP/IP 원리 (1) (0) 2023.07.25 허브 , 스위치, 라우터 , 공유기의 차이 TCP/IP 원리 (0) (0) 2023.07.25