필자: 전자전기공학부 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편에서 이어집니다!
'iot' 카테고리의 다른 글
면접 준비로 공부했던 것들(3) - 임베디드 개발 1장 (0) | 2024.08.01 |
---|---|
면접 준비로 공부했던 것들(2) (0) | 2024.08.01 |
자료구조 필기 .img (2) | 2024.07.03 |
라즈베리파이로 TCP/IP 소켓 통신 (0) | 2024.04.09 |