질의응답 형식으로 면접하듯이 정리해봤습니다.
아무리 잘 아는 질문이라고 해도 막상 대답하려고 하면 어려운거 같습니다.
완벽히 아는게 아니라는걸 알려주는거 같기도합니다.
스스로 질문해보고 응답해보면 기억에 잘 남는거 같습니다.
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 에서 제공하는 흐름제어와 오류제어에 대해서 설명해주세요
- 흐름제어는 데이터를 보내는 속도와 받는 속도를 조절하는 것을 말합니다. 오류제어는 훼손된 세그먼트를 감지 및 재전송하고 순서에 맞지 않게 들어온 패킷에 대해서 제어합니다.
'CS' 카테고리의 다른 글
[OS] 운영체제 질문 - (프로세스,스레드,동기화 문제,교착상태,페이징,가상메모리) (1) | 2022.06.15 |
---|---|
[DB] 인덱스 (1) | 2022.06.14 |
[DB] 트랜잭션 질문 및 응답 (0) | 2022.06.08 |
[네트워크] 쿠키,세션 질문 및 응답 (0) | 2022.06.08 |
[네트워크] HTTP 질문 및 응답 (0) | 2022.06.08 |
댓글