PIC Microcontrollers (and others) contain hardware serial blocks for speaking OBD/CAN protocols. You can buy a PIC yourself and implement the protocol engines, which amounts to programming the register space, clock dividers, handling interrupts etc. If you are then sending the data to a PC/mobile you also need a UART and transmission buffer.
This becomes quite a lot of work if you are making an adapter cable - hence the popularity of off-the-shelf OBD-to-UART adapters such as ELM327/STN1110. They are both PIC chips (ELM327 is implemented on the PIC18F2480, STN1110 on the PIC24HJ128GP502) loaded with software that does rx/tx buffering, filtering, power management etc.
Microchip has reference designs if you want to design your own:
AN738 - PIC18C CAN Routines in 'C' 05 Nov 2001
AN853 - PIC18XXX8 CAN Driver with Prioritized Transmit Buffer 09 Sep 2002
AN816 - A CAN System Using Multiple MCP25050 I/O Expanders 04 Nov 2002
AN873 - Using the MCP2515 CAN Developer?s Kit 02 Sep 2003
AN877 - DeviceNet™ Group 2 Slave Firmware for PIC18 with CAN 06 Oct 2003
AN916 - Comparing CAN and ECAN Modules 05 Mar 2004
TB078 - PLL Jitter and Its Effects in the CAN Protocol 15 Jun 2004
AN930 - J1939 C Library for CAN-Enabled PICmicro® Microcontrollers 16 Jun 2004
AN733 - Using the MCP2510 CAN Developer's Kit 27 Jul 2004
AN878 - PIC18C ECAN C Routines 28 Feb 2005
AN228 - A CAN Physical Layer Discussion 16 Sep 2005
AN713 - An introduction to the CAN protocol key features. 16 Sep 2005
AN754 - Understanding Microchip's CAN Module Bit Timing 16 Sep 2005
AN945 - A CANopen Stack for PIC18 ECAN Microcontrollers 12 Oct 2005
AN247 - A CAN Bootloader for PIC18F CAN Microcontrollers 15 Dec 2008
AN1249 - ECAN Operation with DMA on dsPIC33F and PIC24H Devices 13 Feb 2009
TB3017 - dsPIC30F CAN Interrupt Management 27 Feb 2009
AN212 - Smart Sensor CAN Node using the MCP2510 and PIC16F876 04 Nov 2010
AN215 - A Simple CAN Node using the MCP2510 and PIC12C67X 08 Nov 2010