iot

면접 준비로 공부했던 것들(1)

030binfolder 2024. 8. 1. 14:28

필자: 전자전기공학부 4학년 졸업 예정, 올해 7월 말 취직

 

여름 휴가를 맞이하여(회사 1주일 다님)

면접 준비로 공부했던 것들을 간단히 정리해보는 시간을 가져보겠습니다. . . !

부족한 것들은 차차 추가하기로,,,

 

1. TCP / IP

 

OSI 7계층

응용  
표현  
세션  
전송 TCP - 윗 계층에서 패킷 전송을 보증, 제대로 전송했는지 확인
네트워크 IP - 패킷 전송
데이터 링크 MAC - NIC 제조업체가 하드웨어에 할당한 주소
물리  

 

전송 계층 프로토콜에는 TCP(파일 전송), UDP(실시간, 신뢰성 x)가 있으며, TCP / IP로 묶여 이더넷 통신 프로토콜로 주로 사용한다.

 

요약: 네트워크 계층에서 IP 프로토콜로 패킷 형태로 데이터를 전송하며, 패킷의 송수신 여부와 전송 순서를 제어하고 보증해주기 위해 전송 계층 프로토콜로 TCP를 함께 사용한다.

 

2. 이더넷(Ethernet), 서버 / 클라이언트

 

이더넷은 LAN, WAN에서 많이 활용되는 유선 통신 기술 규격으로 물리 계층에서 물리적 장치의 배선을 통해 데이터링크 계층에서 MAC 주소를 활용하여 기기들 간 데이터 통신을 할 수 있게 하는 네트워크 통신 프로토콜이다. 

 

물리적 장치를 노드라고 하고, 이 노드들은 각각 고유의 물리주소(메모리 주소 아님)인 MAC(48bit)를 가지고 있다.

 

이 노드들 중 네트워크에 연결된 노드를 컴퓨터라고 하며, 앱 실행이 가능하다. IP 주소를 할당받은 컴퓨터들은 호스트(host)라고 한다.

호스트는 부여받은 IP주소로 식별하며, 서비스를 제공하는 호스트를 서버, 서비스를 요청하고 사용하는 호스트를 클라이언트라고 한다. 

 

 

 

3. 서버 / 클라이언트, TCP / IP 소켓 통신

 

서버와 클라이언트는 하나의 개념이다. 서버를 만드는 방법 중 하나로 TCP(소켓)가 있으며, TCP로만 서버를 만들 수 있는 건 아니다.

 

* TCP(Transmission Control Protocol) -  전송 제어 프로토콜, 패킷 전송 순서 재조합, 흐름 제어등을 할 수 있다.

같은 컴퓨터에서의 프로세스들은 모두 같은 ip주소를 갖고 있기 때문에 이를 구별하기 위해 TCP는 포트번호를 부여해 구별한다.

 

국비 교육(그립다)에서 사용한 Samba - Nfs를 예로 들어보면, 교수님의 samba 폴더는 서버, 교육생들의 samba 폴더는 클라이언트가 되는 것이다(교수님이 samba 폴더에 공유할 파일을 올리면, nfs로 연결한 교육생들이 자신의 samba 폴더로 파일을 복사함).

 

https://littlebinsuishere.tistory.com/m/10

 

라즈베리파이로 TCP/IP 소켓 통신

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=5928062&start=pgooglemc 윤성우의 열혈 TCP/IP 소켓 프로그래밍눅스와 윈도우 기반에서의 소켓 프로그래밍을 함께 설명하며, 초보자에게 적절한 설명과 예제를

littlebinsuishere.tistory.com

 

(TCP/IP 서버-클라이언트 소켓 통신을 활용한 프로젝트 글로 서버, 클라이언트에 어떤 함수를 활용했는지 실제 면접 질문을 받음)

 

Socket은 네트워크 프로그래밍에서 프로그램이 네트워크에서 데이터를 서로 송수신할 수 있는 데이터 통로 역할로, 데이터를 포장하는 박스라고 생각하면 된다. 전송 계층에서 TCP, UDP와 함께 쓰이며 TCP(/IP) socket, UDP socket으로 불린다.

 

https://velog.io/@dogfootbirdfoot/SocketProgramming

 

TCP/IP 소켓 프로그래밍

소켓(Socket)은 사전적으로 "구멍", "연결", "콘센트" 등의 의미를 갖는다. 네트워크 프로그래밍에서의 관점에서의 소켓은 프로그램이 네트워크에서 데이터를 송수신할 수 있도록 네트워크 환경에

velog.io

 

(제가 쓴 글은 아니지만 정리 잘 되어 있어서 가져왔습니다)

 

* TCP / IP 소켓 통신 순서

Server Socket Client Socket
socket() - 1. 소켓 생성 socket() - 1. 소켓 생성
bind() - 2. 소켓에 ip 주소, port 번호 할당  
listen() - 3. 소켓을 연결 요청 수락이 가능한 상태로 변경  
  connect() - 2. 연결 요청
accept() - 4. 연결 요청 수락  
send(), receive() - 5. 데이터 송수신 send(), receive() - 3. 데이터 송수신
close() - 6. 연결 종료 close() - 4. 연결 종료

 

 

2편에서 이어집니다!