728x90
본 포스팅은 < 컴퓨터 네트워킹 하향식 접근[8판] James F. Kurose, Keith W. Ross 저/최종원, 강현국, 김기태 > 을 참고하여 작성되었습니다.
Ch02 Application Layer
7. Socket Programming
Socket 소켓 프로그래밍
- 목표 : 클라이언트의 소켓 프로그램을 만들어 볼 것임
Socket : UDP
- UDP 소켓 통신
- 클라이언트와 서버간의 연결(handshaking)이 존재하지 않는다
- 전송자는 IP주소, 포트 번호를 패킷에 붙여서 보낸다
- 송신자는 패킷에서 전송자의 IP주소와 포트번호를 추출한다.
- 서버와 클라이언트가 UDP 소켓 통신을 하는 예시 프로세스 (파이썬)
UDP 클라이언트의 파이썬 코드
- ‘hostname’ 의 12000 포트로 소켓 열기
- message를 bytestream으로 인코딩하여 보냄 (튜플로 서버이름과 포트를 첨부)
- 응답 메세지를 받아옴 (최대 2048바이트)
UDP 서버의 파이썬 코드
- 12000 포트로 소켓 열기 (바인딩해줌)
- 해주지않으면 랜덤하게 부여됨
- 메세지를 받아올 때까지 대기
- 메세지를 가져오면 대문자로 변환한 메세지를 클라이언트에게 전송
Socket : TCP
- TCP 소켓 통신
- 클라이언트는 반드시 서버와 연결
- 12000포트로 소켓 생성 ➡️ 서버와 연결
- 12000포트 바인딩하여 소켓을 생성
- listen 하면서 TCP 연결을 기다림
- 연결 되면 새로 만들어진 연결된 클라이언트와의 소켓을 받아옴 (accept)
- 이 소켓으로 통신한다 (서버 소켓이 아님)
728x90
'Computer Science > Computer Network' 카테고리의 다른 글
📡 [Network] 전송층(Transport Layer)에 대해서 (개요) (0) | 2022.10.10 |
---|---|
간단한 클라이언트-서버 소켓 채팅 💬 프로그램 만들어보기 (with 파이썬🐍) (0) | 2022.10.06 |
📡 [Network] 어플리케이션층 - 비디오 스트리밍 (비디오 인코딩 CBR, VBR, DASH 프로토콜) (0) | 2022.10.06 |
📡 [Network] 어플리케이션층 - DNS 도메인 네임 시스템 (DNS의 구성, 반복쿼리, 재귀쿼리, DNS 캐싱, DNS 레코드) (0) | 2022.10.06 |
📡 [Network] 어플리케이션층 - 인터넷 메일(E-mail) (SMTP 프로토콜) (0) | 2022.10.01 |