일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 달인막창
- 개성국밥
- JanusGateway
- pytest
- 코루틴 빌더
- VARCHAR (1)
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- kotlin
- k8s #kubernetes #쿠버네티스
- vfr video
- tolerated
- mp4fpsmod
- 겨울 부산
- python
- terminal
- 오블완
- JanusWebRTCServer
- PersistenceContext
- JanusWebRTC
- 티스토리챌린지
- Spring Batch
- PytestPluginManager
- table not found
- 깡돼후
- 코루틴 컨텍스트
- JanusWebRTCGateway
- taint
- Value too long for column
- 자원부족
- preemption #
목록Computer Networks/실습 (7)
너와 나의 스토리
시그널이란? 특정 상황이 되었을 때 운영체제가 프로세스에게 해당 상황이 발생했음을 알리는 일종의 메시지를 가리켜 시그널이라고 한다. 시그널 등록이란? 특정 상황에서 운영체제로부터 프로세스가 시그널을 받기 위해서는 해당 상황에 대해서 등록의 과정을 거쳐야 한다. 시그널과 signal 함수 프로세스와 운영체가 하는 일 ex) 자식 프로세스가 종료되면 프로세스가 zombie_handler라는 이름의 함수를 호출하도록 하고 싶을 때 프로세스: zombie_handler라는 함수 생성 운영체제: 자식 프로세스가 종료되면 대신 zombie_handler 함수 호출해줌 시그널 등록 함수(시그널 등록할 때 사용) 매개변수 선언: int signo, void(*func)(int) signo: 특정 상황에 대한 정보 vo..
Time-wait의 이해 Four-way handshaking 호스트 A를 서버라고 하자, 서버가 호스트 B로 FIN 메시지를 먼저 보내고 있으니, 서버가 콘솔상에서 CTRL+C를 입력한 상황으로 볼 수 있다. 이 때, four-way handshaking이 끝나고 바로 소켓이 소멸되는 것이 아니라 일정시간(time-wait)을 거친다. 먼저 연결 종료를 요청한 호스트만 time wait 상태를 거친다. 소켓이 time-wait 상태에 있는 동안에는 해당 소켓의 PORT 번호가 사용중이므로 다른 소켓에 할당할 수 없다. Time-wait의 존재 이유 호스트 A가 마지막 ACK을 전송하고 바로 소켓을 소멸시켰는데, 그 ACK이 소멸된다면? 호스트 B는 호스트 A가 자신의 FIN을 못 받은지 알고 계속 FI..
TCP 서버의 기본적인 함수 호출 순서 listen() 함수를 호출하면 연결 요청이 가능한 상태가 된다. 이 listen() 함수의 호출이 의미하는 바를 알아보자 연결 요청 대기 상태로의 진입 연결 요청도 일종의 데이터 전송이다. 따라서 연결 요청을 받아들이기 위해서는 하나의 소켓이 필요하다. 이 소켓을 가리켜 서버 소켓 또는 리스닝 소켓이라고 한다. listen 함수의 호출은 소켓을 리스닝 소켓이 되게 한다. 클라이언트의 연결 요청 수락 연결 요청 정보를 참조하여 클라이언트 소켓과의 통신을 위한 별도의 소켓을 추가로 하나 더 생성한다. 이렇게 생성된 소켓을 대상으로 데이터의 송수신이 진행된다. TCP 클라이언트의 기본적인 함수호출 순서 connect() 함수 호출할 때 연결할 서버의 주소 정보도 함께 ..
인터넷 프로토콜(IP) 기반 소켓의 경우, 데이터 전송방법에 따라 TCP 소켓과 UDP 소켓으로 나뉘고, 특히 TCP 소켓의 경우 연결을 지향하기 때문에 '스트림 기반 소켓'이라고도 이야기한다. TCP(Transmission Control Protocol): 데이터 전송과정의 컨트롤 Application layer(5계층): 프로토콜 결정 (FTP,SMTP,HTTP,...) Transport layer(4계층): 통신 방식 결정 (TCP/UDP) Network layer(3계층): 데이터 전송 교환 담당 (IP - router 이용) Link layer(2계층): 완전 실제 전달 Link 계층 Link 계층은 물리적인 영역의 표준화에 대한 결과이다. 이는 가장 기본이 되는 영역으로 LAN, WAN, MA..
IP주소와 PORT 번호 인터넷 주소(Internet Address) 인터넷에 컴퓨터를 연결해서 데이터를 주고받기 위해서는 IP 주소를 부여 받아야 한다. 인터넷 상에서 컴퓨터를 구분하는 목적으로 사용되는 주소 이러한 IP 주소체계는 IP 주소의 표현에 사용되는 바이트 크기에 따라 다음과 같이 두 종류로 나뉜다. IPv4(Internet Protocol version 4) - 4 바이트 주소 체계 IPv6(Internet Protocol version 6) - 16 바이트 주소 체계 소켓을 생성할 때 기본적인 프로토콜을 지정해야 한다. 네트워크 주소와 호스트 주소로 나뉜다. 네트워크 주소를 이용해서 네트워크를 찾고, 호스트 주소를 이용해서 호스트를 구분한다. WWW.SEMI.COM이라는 회사의 사람에게 ..
리눅스는 소켓을 파일의 일종으로 구분한다. 따라서 파일 입출력 함수를 소켓 입출력에, 다시 말해서 네트워크상에서의 데이터 송수신에 사용할 수 있다. *참고로 윈도우는 리눅스와 달리 파일과 소켓을 구분함. 저 수준 파일 입출력(Low-level File Access)과 파일 디스크립터(File Descriptor) 저 수준 파일 입출력: ANSI의 표준 함수가 아닌, 운영체제가 제공하는 함수 기반의 파일 입출력 표준이 아니기 때문에 운영체제에 대한 호환성이 없다. 리눅스는 소켓도 파일로 간주하기 때문에, 저 수준 파일 입출력 함수를 기반으로 소켓 기반의 데이터 송수신이 가능하다. 파일 디스크립터 시스템으로부터 할당 받은 파일 또는 소켓에 부여된 정수를 의미 즉, 운영체제가 만든 파일(소켓)을 구분하기 위한..
네트워크 프로그래밍 소켓 기반 프로그래밍 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를 주고받을 수 있도록 하는 것 인터넷이라는 거대한 네트워크로 연결되어 있으므로 물리적인 연결은 신경 쓸 필요 없다. 소켓 연결된 네트워크 상에서 데이터 송수신에 사용할 수 있는 운영체제가 제공하는 소프트웨어적인 장치 네트워크를 통한 두 컴퓨터의 연결을 의미하기도 한다. 소켓은 프로그래머에게 데이터 송수신에 대한 물리적, 소프트웨어적(TCP/UDP 프로토콜의) 세세한 내용을 신경 쓰지 않게 한다. TCP 소켓은 전화기에 비유될 수 있다. 리눅스에서 실습 저는 Cygwin을 설치해 실습하였습니다. 컴파일 gcc helloworld.c -o hello-> helloworld.c 파일을 컴파일해서 hello라는 이름..