본문 바로가기
CS

[네트워크] TCP 질문 및 응답

by onejunu 2022. 6. 8.

질의응답 형식으로 면접하듯이 정리해봤습니다.

아무리 잘 아는 질문이라고 해도 막상 대답하려고 하면 어려운거 같습니다.

완벽히 아는게 아니라는걸 알려주는거 같기도합니다.

스스로 질문해보고 응답해보면 기억에 잘 남는거 같습니다.


TCP가 무엇인가요?

- 인터넷 상에서 데이터를 주고 받기 위해 사용하는 전송계층의 프로토콜입니다. 기존 IP방식에 연결지향적인 특징이 더해졌습니다.

 

IP를 언급하셨는데 TCP와 IP의 차이가 무엇인가요?

- TCP와 IP의 차이를 설명하기 전에 먼저 네트워크를 위해 패킷이 어떻게 생성되는지 알아야 합니다. 

패킷

- IP는 출발지 IP와 목적지 IP 정보만 있습니다. 하지만 출발지 IP와 목적지 IP만 있다면 중간에 패킷이 유실되어도 패킷을 받는 입장에서는 유실되었는 지 알 길이 없습니다. 이를 보완하기 위한 정보들이 TCP헤더에 포함되어 있습니다. 전송제어,순서정보,검증정보등이 포함되어 있어서 데이터를 받는 입장에서는 어떤 데이터가 유실되었고 순서가 맞지 않는 지 알 수 있습니다.

 

- 또한 TCP는 출발지 PORT와 목적지 PORT가 있는데 이는 같은 IP 내에서 다른 프로세스들을 구분해줍니다. 

 

- 결론은 IP는 출발지IP와 목적지IP만 가진 프로토콜이며 TCP는 그외 PORT정보와 여러 제어정보를 포함하고 있다는 차이가 있습니다.

 

연결지향적인 특징이 있다고 했는데 그게 무엇인가요?

- 서로 연결되어 있는 것과 같은 특징을 말합니다. TCP는 이를 위해서 3 way handshaking을 제공합니다. 실제로 연결된 상태는 아니고 논리적으로 연결되어 있음을 의미합니다. 

 

3-way handshake을 시작으로 연결종료까지 설명해주세요

- 3-way handshake는 TCP/IP 프로토콜로 통신하기 전에 클라이언트와 서버의 일종의 세션을 수립하는 과정입니다. 

 

1) 클라이언트가 서버에게 SYN 을 보냅니다.

2) 서버는 클라이언트에게 ACK + SYN 을 보냅니다.

3) 클라이언트는 서버에게 ACK를 보냅니다.

 

이러한 3-way handshake를 통해서 클라이언트와 서버는 난수로 구성된 일련번호를 주고 받습니다.

일련번호를 통해 데이터의 순서와 정확성을 보증합니다.

 

4) 서버와 클라이언트는 데이터를 주고 받습니다.

 

연결을 종료하기 위해서는 4-way handshake를 통해 종료합니다.

 

5) 클라이언트에서 서버로 FIN을 보냅니다.

6) 서버는 클라이언트로 ACK를 보내고 서버 내 process에게 EOF를 보낸다음 종료될때까지 대기합니다.

7) 서버의 process가 종료되면 클라이언트에게 FIN을 보냅니다.

8) 클라이언트가 ACK를 서버에게 보냄으로써 연결이 종료됩니다.

 

TCP 에서 제공하는 흐름제어와 오류제어에 대해서 설명해주세요

 

- 흐름제어는 데이터를 보내는 속도와 받는 속도를 조절하는 것을 말합니다. 오류제어는 훼손된 세그먼트를 감지 및 재전송하고 순서에 맞지 않게 들어온 패킷에 대해서 제어합니다.

 

 

 

댓글